#r #csv #dataframe
#r #csv #фрейм данных
Вопрос:
Для проекта мне нужно импортировать файл данных (CSV) в gephi, чтобы визуализировать его. Gephi запрашивает входные данные с источником и целью в соотношении 1: 1. Мой файл CSV состоит примерно из 1000 строк с идентификатором в первом столбце. В последующих столбцах содержится x количество целевых объектов, в зависимости от источника. Таким образом, исходный и целевой данные находятся в соотношении 1: x, поэтому я попытался использовать R для перевода одного из фреймов данных в другой. Создание более длинного фрейма данных всего с двумя столбцами и дублированием в первом идентификаторе в качестве значения исходного столбца с новой строкой в фрейме данных для каждого целевого объекта, подключенного к идентификатору.
Моя проблема на данный момент заключается в том, что фрейм данных gephilijst не заполняется после выполнения этих строк кода. Может кто-нибудь, пожалуйста, сказать мне, что не так с кодом? Спасибо!
netwerk <- read.csv("P:\Documents\uni\dataMiningR.csv", header = TRUE)
#create the new data frame
gephilijst <- data.frame()
#declare variables
i <- 1
t <- 2
rowcount <- 1
#for every row in the dataframe
if(i <= nrow(netwerk) ){
while(is.null(netwerk[i,t]) == FALSE){
#Give cell Ai the value of the person id
gephilijst[rowcount, 1 ] <- netwerk[i, 1]
#Give the cell Bi the value of the next contact
gephilijst[rowcount, 2 ] <- netwerk[i, t]
#raise the numbers to check if there will be a new contact
t <- t 1
rowcount <- rowcount 1
}
#reset numbers to go to the next line in the original csv
t <- 2
i <- i 1
}
Входные данные в netwerk выглядят следующим образом
1 2 3 4 5
2 3 4 5 6
Желаемый результат был бы таким: 1 2 1 3 1 4 1 5 2 3 2 4 2 5 2 6
Этот пример упрощен
Комментарии:
1. Не могли бы вы предоставить образец netwerk и соответствующий желаемый результат, который был бы в gephilijst?
2. Конечно, в комментариях это довольно плохо. Итак, я отредактирую вопрос
3. Я не понимаю ваш пример, из того, что вы сказали, что netwerk выглядит как вектор или фрейм данных в 1 столбец, но у вас есть netwerk [i, t] в вашем цикле. Не могли бы вы уточнить?
Ответ №1:
Я пытаюсь воспроизвести вашу проблему с помощью кода вниз. Но я не нахожу проблему, которую вы описываете: объект gephilijst
содержит что-то.
netwerk <- data.frame(ID = c(1:25), source=runif(25,1,100), target=runif(25,1,100) )
#create the new data frame
gephilijst <- data.frame()
#declare variables
i <- 1
t <- 2
rowcount <- 1
#for every row in the dataframe
if(i <= nrow(netwerk) ){
while(is.null(netwerk[i,t]) == FALSE){
#Give cell Ai the value of the person id
gephilijst[rowcount, 1 ] <- netwerk[i, 1]
#Give the cell Bi the value of the next contact
gephilijst[rowcount, 2 ] <- netwerk[i, t]
#raise the numbers to check if there will be a new contact
t <- t 1
rowcount <- rowcount 1
}
#reset numbers to go to the next line in the original csv
t <- 2
i <- i 1
}
> gephilijst
V1 V2
1 1 40.37779
2 1 78.67263