【问题标题】:dcast multiple dataframes in a for loop在 for 循环中 dcast 多个数据帧
【发布时间】:2019-11-23 04:04:36
【问题描述】:

所以我有多个数据帧,遵循以下模式:

df1<-data.frame(id=c("1","2","1","2"),choice=c(1,1,1,2))
df2<-data.frame(id=c(...),choice=c(...))
df1
  id choice
1  1      1
2  2      1
3  1      1
4  2      2

现在我想知道,每个人选择不同选项的频率:

df1_cast<-dcast(df1,choice~id,value.var = "choice",fill = 0,fun.aggregate = length)
df1_cast
  choice 1 2
1      1 2 1
2      2 0 1

由于我有多个数据框,我尝试使用 for 循环对其进行循环:

experiments<-list(df1,df2,...)
for (i in 1:length(experiments)){
  dcast(experiments[i],choice~id,value.var="choice",fill=0,fun.aggregate=length)

}

遗憾的是,数据帧被保存为列表中的列表,并且 dcast 函数找不到value.var

【问题讨论】:

    标签: r for-loop data.table reshape2 dcast


    【解决方案1】:

    你可以使用lapply:

    df1<-data.frame(id=c("1","2","1","2"),choice=c(1,1,1,2))
    df2<-data.frame(id=c("1","2","1","2"),choice=c(2,2,2,1))
    experiments<-list(df1,df2)
    
    library(reshape2)
    
    lapply(experiments, function(dfx) 
                         dcast(dfx,choice~id,value.var = "choice", 
                                   fill = 0,fun.aggregate = length))
    
    #> [[1]]
    #>   choice 1 2
    #> 1      1 2 1
    #> 2      2 0 1
    #> 
    #> [[2]]
    #>   choice 1 2
    #> 1      1 0 1
    #> 2      2 2 1
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-26
    • 2023-03-19
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多