Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在r中将列细分为多个值_R - Fatal编程技术网

在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