Этот вопрос уже имеет ответ здесь:
Я сожалею, если на этот вопрос уже ответили. Кроме того, это - мой первый раз на stackoverflow.
У меня есть вопрос о новичке R относительно списков, кадров данных и merge()
и/или rbind()
.
Я запустил с Панели, которая похожа на это
COUNTRY YEAR VAR
A 1
A 2
B 1
B 2
В целях эффективности я создал список, который состоит из одного кадра данных для каждой страны и выполнил множество вычислений на каждом человеке data.frame
. Однако я, может казаться, не комбинирую отдельные кадры данных в один крупный кадр снова.
rbind()
и merge()
оба говорят мне, что только замена элементов позволяется.
Кто-то мог сказать мне, что я делаю неправильный / и как на самом деле повторно объединить кадры данных?
Спасибо
Возможно, вы хотите сделать что-то вроде:
do.call("rbind", my.df.list)
Возможно, это лучший способ сделать это, но, похоже, он работает и прост. (В моем коде четыре строки, чтобы было легче увидеть шаги; эти четыре можно легко объединить.)
# first re-create your data frame:
A = matrix( ceiling(10*runif(8)), nrow=4)
colnames(A) = c("country", "year_var")
dfa = data.frame(A)
# now re-create the list you made from the individual rows of the data frame:
df1 = dfa[1,]
df2 = dfa[2,]
df3 = dfa[3,]
df4 = dfa[4,]
df_all = list(df1, df2, df3, df4)
# to recreate your original data frame:
x = unlist(df_all) # from your list create a single 1D array
A = matrix(x, nrow=4) # dimension that array in accord w/ your original data frame
colnames(A) = c("country", "year_var") # put the column names back on
dfa = data.frame(A) # from the matrix, create your original data frame
Плыр, наверное, лучший. Другой полезный подход, если фреймы данных могут быть разными, - это использовать изменение формы:
library(reshape)
data <- merge_recurse(listofdataframes)
Посмотрите мой ответ на этот связанный вопрос о слиянии фреймов данных .