我想在使用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也是一种替代方法,但是很难与我的非唯一标识符一起使用。任何帮助将不胜感激!
答案 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))