我有以下tbl_df;总计2行不同变量dplyr
V1 V2
abc 39
12bc 15
87gd 3
987 50
正巧变量abc
和可变12bc
意味着同样的事情。我想运行一个dplyr脚本来添加V2
上的值来合并两行,隐藏或删除以前的行并创建一个新行。 tbl_df最终将如下所示:
V1 V2
abc 54 => where abc is the sum of previous abc and 12bc
87gd 3
987 50
预先感谢您!
我有以下tbl_df;总计2行不同变量dplyr
V1 V2
abc 39
12bc 15
87gd 3
987 50
正巧变量abc
和可变12bc
意味着同样的事情。我想运行一个dplyr脚本来添加V2
上的值来合并两行,隐藏或删除以前的行并创建一个新行。 tbl_df最终将如下所示:
V1 V2
abc 54 => where abc is the sum of previous abc and 12bc
87gd 3
987 50
预先感谢您!
如果你不想使用plyr,这可能工作!
new_df <- old_df %>%
mutate(V1 = ifelse(V1 == "12bc", "abc", V1) %>%
group_by(V1) %>%
summarise(V2 = sum(v2))
这正是我需要的。非常感谢你!!! – Gilbert
分两步进行:首先用新值替换“旧”V1值,然后按V1进行分组并汇总。
plyr
包中有一个revalue
函数可用于替换值。首先创建一个矢量与所有你想要的替代品(如果它的只有6家,如您在您的评论指定,这不应该是一个问题)
replacements <- c("12bc" = "abc") # put other pairs in, separated by commas
然后,您可以在相同的步骤升值和组总结之前:
newdata <- mydata %>%
group_by(V1 = plyr::revalue(V1, replacements)) %>%
summarize(V2 = sum(V2))
请注意,这假定您没有任何列,除了V1和V2。如果你这样做,你需要指定他们如何得到总结(如果它们在旧版本和新版本之间有所不同,怎么办?)
如何知道'abc'和'12bc'是指同一件事物 - 是它*只是*你想合并的那两个,还是合并一组更大的值对(或组) ? –
abc在旧版本中具有含义,在新版本中将其改为12bc。 – Gilbert
你有这种匹配查找表吗?或者它只有1例abc到12bc? – zx8754