在reshape2代码中添加非唯一标识符的计数列

时间:2018-08-20 20:05:41

标签: r reshape2

我想在使用reshape2更改的数据帧中添加一列,这就是在重新调整数据帧之前每个电子邮件地址(非唯一标识符)出现的次数。我的数据框包含一个电子邮件地址标识符和几个数字值,例如:

Email              | Val1 | Val2 |  Val3
blah@blahmail.com     1     2       3
blah@blahmail.com     3     5       2
blah@blahmail.com     8     5       2
j@blahmail.com        7     4       8
a@blahmail.com        3     6       1
a@blahmail.com        3     5       5

我已使用以下代码按电子邮件地址对相关的数字条目求和,以便每个电子邮件地址各占一行。

这是我用来重塑数据框的代码:

library(reshape2)
meltTest <- melt(df, id.vars = "email")
dcastTest <- dcast(meltTest, email ~ variable, fun.aggregate = sum, 
na.rm = TRUE)    

我尝试添加替代功能(fun.aggregate),并且还尝试了“边距”。我意识到,tidyr也是一种替代方法,但是很难与我的非唯一标识符一起使用。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

假设meltTest是上面显示的数据框,则可以使用dplyr包一次完成两个步骤,

library(dplyr)
df_new <- meltTest %>% 
group_by(Email) %>% 
summarise(TotVal1 = sum(Val1, na.rm = TRUE), TotVal2 = sum(Val2, na.rm = TRUE), TotVal3 = sum(Val3, na.rm = TRUE), TotCount = length(Email))