R 如何将一列中的值分隔为不同的列?
我在一列中有以下条目R 如何将一列中的值分隔为不同的列?,r,R,我在一列中有以下条目 flags ***AP*** ***AP*** ***A**** ***AP*** ***A**** ***AP*** ***AP*** ***AP*** 我需要创建两个具有如下值的列 flag1 flag2 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 其中,flag1中的1对应于A存在,同样,flag2中的1对应于p存在。 如何删除*并将A和P分离到两个不同的列如果您只想检查列标志中的
flags
***AP***
***AP***
***A****
***AP***
***A****
***AP***
***AP***
***AP***
我需要创建两个具有如下值的列
flag1 flag2
1 1
1 1
1 0
1 1
1 0
1 1
1 1
1 1
其中,flag1中的1对应于A存在,同样,flag2中的1对应于p存在。
如何删除*并将A和P分离到两个不同的列
如果您只想检查列标志中的
A
和P
是否存在(即部分匹配),您可以执行以下操作:
cbind(df, sapply(c("A", "P"), grepl, df$flags))
# flags A P
#1 ***AP*** TRUE TRUE
#2 ***AP*** TRUE TRUE
#3 ***A**** TRUE FALSE
#4 ***AP*** TRUE TRUE
#5 ***A**** TRUE FALSE
#6 ***AP*** TRUE TRUE
#7 ***AP*** TRUE TRUE
#8 ***AP*** TRUE TRUE
TRUE
和FALSE
的使用方法与1
和0
相同,尽管列属于逻辑类
如果您只想检查A
和p
列中标志
的存在性(即部分匹配),您可以执行以下操作:
cbind(df, sapply(c("A", "P"), grepl, df$flags))
# flags A P
#1 ***AP*** TRUE TRUE
#2 ***AP*** TRUE TRUE
#3 ***A**** TRUE FALSE
#4 ***AP*** TRUE TRUE
#5 ***A**** TRUE FALSE
#6 ***AP*** TRUE TRUE
#7 ***AP*** TRUE TRUE
#8 ***AP*** TRUE TRUE
TRUE
和FALSE
的使用方法与1
和0
相同,尽管列属于逻辑类
我们可以使用mtabulate
和stru extract
library(stringr)
library(qdapTools)
cbind(df1, mtabulate(str_extract_all(df1$flags, "[A-Z]")))
# flags A P
#1 ***AP*** 1 1
#2 ***AP*** 1 1
#3 ***A**** 1 0
#4 ***AP*** 1 1
#5 ***A**** 1 0
#6 ***AP*** 1 1
#7 ***AP*** 1 1
#8 ***AP*** 1 1
我们可以将
mtabulate
与stru extract
library(stringr)
library(qdapTools)
cbind(df1, mtabulate(str_extract_all(df1$flags, "[A-Z]")))
# flags A P
#1 ***AP*** 1 1
#2 ***AP*** 1 1
#3 ***A**** 1 0
#4 ***AP*** 1 1
#5 ***A**** 1 0
#6 ***AP*** 1 1
#7 ***AP*** 1 1
#8 ***AP*** 1 1