在r中用逗号分隔的两个值之和

在r中用逗号分隔的两个值之和,r,R,我有一个数据框,其中几列有两个值,它们之间用逗号分隔,如下所示: x<-c("a", "b", "c") y<-c("1", "2", "3,4") z<-c("3", "4", "1,2") df<-data.frame(x,y,z) x一个选项是在“y”、“z”列上使用分隔行在分隔符处拆分,,展开行,按“x”列分组,获得所有其他列的总和 library(dplyr) library(tidyr) df %>% separate_rows(y, z, co

我有一个数据框,其中几列有两个值,它们之间用逗号分隔,如下所示:

x<-c("a", "b", "c")
y<-c("1", "2", "3,4")
z<-c("3", "4", "1,2")
df<-data.frame(x,y,z)

x一个选项是在“y”、“z”列上使用
分隔行
在分隔符处拆分
,展开行,按“x”列分组,获得所有其他列的
总和

library(dplyr)
library(tidyr)
df %>%
   separate_rows(y, z, convert = TRUE) %>%
   group_by(x) %>% 
   summarise_all(sum)
# A tibble: 3 x 3
#  x         y     z
#  <fct> <int> <int>
#1 a         1     3
#2 b         2     4
#3 c         7     3
库(dplyr)
图书馆(tidyr)
df%>%
单独的_行(y,z,convert=TRUE)%>%
分组依据(x)%>%
总结所有(总和)
#一个tibble:3x3
#x y z
#    
#1A13
#2 b 2 4
#3 c 7 3

一个选项是在“y”、“z”列上使用
分隔行
在分隔符处拆分
,展开按“x”列分组的行,获得所有其他列的
总和

library(dplyr)
library(tidyr)
df %>%
   separate_rows(y, z, convert = TRUE) %>%
   group_by(x) %>% 
   summarise_all(sum)
# A tibble: 3 x 3
#  x         y     z
#  <fct> <int> <int>
#1 a         1     3
#2 b         2     4
#3 c         7     3
库(dplyr)
图书馆(tidyr)
df%>%
单独的_行(y,z,convert=TRUE)%>%
分组依据(x)%>%
总结所有(总和)
#一个tibble:3x3
#x y z
#    
#1A13
#2 b 2 4
#3 c 7 3

对于每一列,我们使用
gsubfn
匹配数字、逗号、将两组数字传递给公式表示法中表示的函数的数字。函数的输出将替换输入

library(gsubfn)

repl <- function(x) gsubfn("(\\d+),(\\d+)", ~ as.numeric(x) + as.numeric(y), paste(x))
replace(df, TRUE, lapply(df, repl))

对于每一列,我们使用
gsubfn
匹配数字、逗号、将两组数字传递给公式表示法中表示的函数的数字。函数的输出将替换输入

library(gsubfn)

repl <- function(x) gsubfn("(\\d+),(\\d+)", ~ as.numeric(x) + as.numeric(y), paste(x))
replace(df, TRUE, lapply(df, repl))

我在我的数据集上尝试了这一点,但是我收到了错误消息“总结中出错(.data,dots):计算错误:参数的“类型”(字符)无效”。我尝试更改为数字,但所有带有逗号的条目都会自动更改为NAs。我应该使用另一种类型吗?@Mary你能将你的数据集创建为
character
class(虽然它对我来说工作得很好)
dfI用我的数据集尝试了这一点,但是我收到了错误消息“error in summary\u impl(.data,dots):求值错误:参数的'type'(character)无效。”我尝试改为数值,但是,所有带有逗号的条目都会自动更改为NAs。我应该使用另一种类型吗?@Mary你能将你的数据集创建为
character
class(尽管它对我来说很好)
df吗