在 reshape2 代码中添加一个非唯一标识符的计数列
Add a count column of non-unique identifier in reshape2 code
我想向我使用 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) 并且也尝试过 "margins." 我意识到 tidyr 也是一个替代函数,但它很难与我的非唯一标识符一起使用.如有任何帮助,我们将不胜感激!
假设 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))
我想向我使用 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) 并且也尝试过 "margins." 我意识到 tidyr 也是一个替代函数,但它很难与我的非唯一标识符一起使用.如有任何帮助,我们将不胜感激!
假设 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))