Переобъединение списка Data.frames в единственный кадр данных [дубликат]

Этот вопрос уже имеет ответ здесь:

Я сожалею, если на этот вопрос уже ответили. Кроме того, это - мой первый раз на stackoverflow.

У меня есть вопрос о новичке R относительно списков, кадров данных и merge() и/или rbind().

Я запустил с Панели, которая похожа на это

COUNTRY YEAR VAR
A         1
A         2
B         1
B         2

В целях эффективности я создал список, который состоит из одного кадра данных для каждой страны и выполнил множество вычислений на каждом человеке data.frame. Однако я, может казаться, не комбинирую отдельные кадры данных в один крупный кадр снова.

rbind() и merge() оба говорят мне, что только замена элементов позволяется.

Кто-то мог сказать мне, что я делаю неправильный / и как на самом деле повторно объединить кадры данных?

Спасибо

30
задан CGN 8 December 2014 в 09:48
поделиться

3 ответа

Возможно, вы хотите сделать что-то вроде:

do.call("rbind", my.df.list)

36
ответ дан 27 November 2019 в 23:44
поделиться

Возможно, это лучший способ сделать это, но, похоже, он работает и прост. (В моем коде четыре строки, чтобы было легче увидеть шаги; эти четыре можно легко объединить.)

# 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
4
ответ дан 27 November 2019 в 23:44
поделиться

Плыр, наверное, лучший. Другой полезный подход, если фреймы данных могут быть разными, - это использовать изменение формы:

library(reshape)
data <- merge_recurse(listofdataframes)

Посмотрите мой ответ на этот связанный вопрос о слиянии фреймов данных .

4
ответ дан 27 November 2019 в 23:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: