【问题标题】:R - How to manipulate all subsets of a dataset at onceR - 如何一次操作数据集的所有子集
【发布时间】:2018-09-19 10:05:07
【问题描述】:

是否可以操作已拆分为多个子集的数据集列?问题是,如果将代码应用于其他函数,代码看起来毫无用处。

> df <- split(d08,d08$kraj_zn)
> df$BA$min <- min(df$BA$EQ_INC20)
> df$TT$min <- min(df$TT$EQ_INC20)
> df$TN$min <- min(df$TN$EQ_INC20)
> df$NR$min <- min(df$NR$EQ_INC20)
> df$BB$min <- min(df$BB$EQ_INC20)
> df$ZA$min <- min(df$ZA$EQ_INC20)
> df$KE$min <- min(df$KE$EQ_INC20)
> df$PO$min <- min(df$PO$EQ_INC20)

编辑:

我想要做的是像这样操纵df$min:

 > . ROK . . . kraj_zn min
 > 1 2008 . . . BA -100
 > 101 2008 . . . TT -100
 > 201 2008 . . . TN -100
 > 301 2008 . . . NR -100
 > 401 2008 . . . BB -100

到这里:

> . ROK . . . kraj_zn min
> 1 2008 . . . BA -399
> 101 2008 . . . TT -120
> 201 2008 . . . TN -1
> 301 2008 . . . NR -25
> 401 2008 . . . BB -67

因此df$min 的值将表示基于df$kraj_zn 的最小值。

【问题讨论】:

  • 你也可以使用for循环

标签: r dataframe split


【解决方案1】:

您可以这样使用lapply 和transform:

lapply(df, transform, min=min(Q_INC20))

【讨论】:

    【解决方案2】:

    dplyr 非常适合这些类型的每组操作。您没有提供完全可重现的示例,但与您的代码等效的示例可能是:

    library(dplyr)
    
    df <- d08 %>%
      group_by(kraj_zn) %>%
      summarize(min = min(EQ_INC20))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 2012-10-24
      • 1970-01-01
      相关资源
      最近更新 更多