在r中将列细分为多个值
我有以下数据,在r中将列细分为多个值,r,R,我有以下数据, col <- c('Data1,Data2','a,b,c','d') df <- data.frame(col) col我们创建一个行标识符(row\u number()),将“col”按分隔符拆分(separate\u rows),按“rn”分组,对行数大于1的组进行汇总,以获得“col”的combn,并将它们粘贴在一起 library(stringr) library(dplyr) library(tidyr) df %>% mutate(rn
col <- c('Data1,Data2','a,b,c','d')
df <- data.frame(col)
col我们创建一个行标识符(row\u number()
),将“col”按分隔符拆分(separate\u rows
),按“rn”分组,对行数大于1的组进行汇总,以获得“col”的combn
,并将它们粘贴在一起
library(stringr)
library(dplyr)
library(tidyr)
df %>%
mutate(rn = row_number()) %>%
separate_rows(col) %>%
group_by(rn) %>%
summarise(col = if(n() > 1) combn(col, 2, FUN = str_c, collapse=",") else col,
.groups = 'drop') %>%
select(-rn)
-输出
# A tibble: 5 x 1
# col
# <chr>
#1 Data1,Data2
#2 a,b
#3 a,c
#4 b,c
#5 d
#一个tible:5 x 1
#上校
#
#1数据1,数据2
#2 a、b
#3 a、c
#4 b,c
#5d
这里是一个使用combn的基本R选项
data.frame(col = unlist(sapply(
strsplit(df$col, ","),
function(x) {
if (length(x) == 1) {
x
} else {
combn(x, 2, paste0, collapse = ",")
}
}
)))
给
col
1 Data1,Data2
2 a,b
3 a,c
4 b,c
5 d
库(tidyverse)
df%>%
行()
突变(列=list(如果(str_count(列,“,”)>1)comn(strsplit(列,“,”[[1]],2,toString)else列))%>%
unnest(col)
#一个tibble:5x1
上校
1数据1,数据2
2 a、b
3 a、c
4 b,c
5d
library(tidyverse)
df %>%
rowwise()%>%
mutate(col = list(if(str_count(col, ",")>1) combn(strsplit(col, ",")[[1]], 2, toString) else col))%>%
unnest(col)
# A tibble: 5 x 1
col
<chr>
1 Data1,Data2
2 a, b
3 a, c
4 b, c
5 d