我有一个4500个元素的列表。每个列表的长度为7。是否可以从每个列表中提取某些项目并转换为数据帧。下面是一个例子
List1 <- list(Name = "Peter" , Age = 25 , State = "Texas" , Occupation = "Analyst1" , Salary =5000)
List2 <- list(Name = "Susan" , Age = 30 , State = "New York" , Occupation = "Analyst11" , Salary =7000)
List3 <- list(Name = "John" , Age = 35 , State = "New Jersey" , Occupation = "Manager" , Salary =10000)
List4 <- list(Name = "Sam" , Age = 30 , State = "Florida" , Occupation = "Analyst1" , Salary =5000)
List5 <- list(Name = "Judy" , Age = 30 , State = "California" , Occupation = "Analyst11" , Salary =7000)
FinalList <- list(List1 , List2, List3 , List4 , List5)
我想创建一个列名称,年龄和工资的数据框。我试着像这样使用do.call
FinalResult <- do.call(rbind ,FinalList[][-c(3,4)] )
它正在创建一个数据帧,如下所示:
# name Age State Occupation Salary
#[1,] "Peter" 25 "Texas" "Analyst1" 5000
#[2,] "Sam" 30 "Florida" "Analyst1" 5000
#[3,] "Judy" 30 "California" "Analyst11" 7000
但我想要创造的是
# name Age Salary
#[1,] "Peter" 25 5000
#[2,] "Susan" 30 7000
#[3,] "John" 35 10000
#[4,] "Sam" 30 5000
#[5,] "Judy" 30 7000
有人能帮我吗?谢谢。
发布于 2020-04-30 04:25:48
我认为你想要做的是:
do.call(rbind ,FinalList)[, -c(3, 4)]
#If needed as dataframe
#do.call(rbind.data.frame,FinalList)[, -c(3, 4)]
或者可能更简单地使用dplyr
library(dplyr)
bind_rows(FinalList) %>% select(-(3:4))
和data.table
library(data.table)
rbindlist(FinalList)[, -c(3, 4)]
发布于 2020-04-30 20:17:16
我们可以使用unnest_wider
library(purrr)
library(tidyr)
tibble(col = FinalList) %>%
unnest_wider(c(col)) %>%
dplyr::select(-c(3:4))
https://stackoverflow.com/questions/61515886
复制