小编vsb*_*vsb的帖子

将多行与多列数据R合并为一行

我有一个数据集,其中以不同的方式测量了相同的效果,我想比较这些测量值。我的数据集如下所示:

Study     MType     ID     Insect     Mean     Sd     N
Alla      Fecundity  1      Aphid      .62      .7628  11
Alla      RGR        1      Aphid      -32.8    7.76   11
Ando      Survival   2      Bee        2.34     .67    8
Ando      RGR        2      Bee        4.56     .34    10
Ando      Fecundity  2      Bee        5.32     4.3    20
Run Code Online (Sandbox Code Playgroud)

我想按 ID 号组合行,以便保留每行的 MType、Mean、Sd 和 N(尽管需要更改列名,以便可以区分列)。

希望最终它看起来像:

Study ID Insect Fecundity.mean Fecundity.Sd Fecundity.N RGR.mean RGR.Sd...etc

一些困难:

  1. 大约有 10 种不同的 MType
  2. 每个 ID 号有 2 到 4 个 MType

我搞砸了 reshape 和 tidyr ,我无法弄清楚如何用它们中的任何一个来做到这一点。请帮忙!

r reshape2 tidyr

4
推荐指数
1
解决办法
2万
查看次数

使用 dplyr 将列名作为参数传递给函数

我有一个如下所示的数据框:

transid<-c(1,2,3,4,5,6,7,8)
accountid<-c(a,a,b,a,b,b,a,b)
month<-c(1,1,1,2,2,3,3,3)
amount<-c(10,20,30,40,50,60,70,80)
transactions<-data.frame(transid,accountid,month,amount)
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 dplyr 包动词为每个 accountid 编写每月总金额的函数。

my_sum<-function(df,col1,col2,col3){
df %>% group_by_(col1,col2) %>%summarise_(total_sum = sum(col3))
}

my_sum(transactions, "accountid","month","amount")
Run Code Online (Sandbox Code Playgroud)

得到如下结果:

accountid   month  total_sum
a            1       30
a            2       40
a            3       70
b            1       30
b            2       50
b            3       140
Run Code Online (Sandbox Code Playgroud)

我收到如下错误:- sum(col3) 中的错误:参数的“类型”(字符)无效。如何在汇总函数中将列名作为参数传递而没有引号?

r dataframe dplyr quosure

3
推荐指数
1
解决办法
2903
查看次数

标签 统计

r ×2

dataframe ×1

dplyr ×1

quosure ×1

reshape2 ×1

tidyr ×1