Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String - Fatal编程技术网

R在数据框中从逗号分隔的列对文本进行子集设置

R在数据框中从逗号分隔的列对文本进行子集设置,r,string,R,String,我有一个data.frame,其列如下所示: diagnosis F.31.2,A.43.2,R.45.2,F.43.1 我想以某种方式将这列拆分为两列,其中一列包含所有带F的值,另一列包含所有其他值,从而在df中生成两列,如下所示 F other F.31.2,F43.1 A.43.2,R.45.2 提前感谢尝试下一步tidyverse方法。您可以按,分隔行,然后根据图案创建一个组,以便将形状改宽并获得预期结果: library(dplyr) library(ti

我有一个data.frame,其列如下所示:

diagnosis
F.31.2,A.43.2,R.45.2,F.43.1
我想以某种方式将这列拆分为两列,其中一列包含所有带F的值,另一列包含所有其他值,从而在df中生成两列,如下所示

F             other
F.31.2,F43.1  A.43.2,R.45.2

提前感谢

尝试下一步
tidyverse
方法。您可以按
分隔行,然后根据图案创建一个组,以便将形状改宽并获得预期结果:

library(dplyr)
library(tidyr)
#Data
df <- data.frame(diagnosis='F.31.2,A.43.2,R.45.2,F.43.1',stringsAsFactors = F)
#Code
new <- df %>% separate_rows(diagnosis,sep = ',') %>%
  mutate(Group=ifelse(grepl('F',diagnosis),'F','Other')) %>%
  pivot_wider(values_fn = toString,names_from=Group,values_from=diagnosis)
库(dplyr)
图书馆(tidyr)
#资料
df%
突变(组=ifelse(grepl('F',诊断),'F','Other'))%>%
枢轴宽度(值\u fn=toString,名称\u from=Group,值\u from=diagnosis)
输出:

# A tibble: 1 x 2
  F              Other         
  <chr>          <chr>         
1 F.31.2, F.43.1 A.43.2, R.45.2
#一个tible:1 x 2
F其他
1 F.31.2、F.43.1 A.43.2、R.45.2

首先,在逗号处使用
strsplit
。然后,使用
grep
查找F的索引,并通过乘以1或-1选择/反选择它们,然后
粘贴它们

tmp <- el(strsplit(d$diagnosis, ","))
res <- lapply(c(1, -1), function(x) paste(tmp[grep("F", tmp)*x], collapse=","))
res <- setNames(as.data.frame(res), c("F", "other"))
res 
#               F         other
# 1 F.31.2,F.43.1 A.43.2,R.45.2

tmp谢谢。这成功了!这似乎需要比我最初想象的更多的步骤。
d <- setNames(read.table(text="F.31.2,A.43.2,R.45.2,F.43.1"), "diagnosis")