【问题标题】:Add a count column of non-unique identifier in reshape2 code在 reshape2 代码中添加非唯一标识符的计数列
【发布时间】:2018-08-20 20:05:41
【问题描述】:

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

【问题讨论】:

  • 如果您还提供了所需的输出以便可以测试和验证可能的解决方案,这可能会有所帮助,

标签: r reshape2


【解决方案1】:

假设 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))

【讨论】:

  • 这正是我想要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 2021-11-30
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 2023-02-06
相关资源
最近更新 更多