R 如何正确分割字符值

R 如何正确分割字符值,r,R,我有一个由一些复合信息组成的数据框架。我想将向量a拆分为向量“a”和“d”,其中“a”仅对应于数字ID 898、3467、234、222,而向量“d”包含相应的字符值 数据: strsplit是正确的,但您需要传递要拆分的字符: do.call(rbind, strsplit(as.character(df$a), "_")) # [,1] [,2] # [1,] "898" "Me" # [2,] "3467" "You or " # [3,] "234"

我有一个由一些复合信息组成的数据框架。我想将向量a拆分为向量“a”和“d”,其中“a”仅对应于数字ID 898、3467、234、222,而向量“d”包含相应的字符值

数据:


strsplit
是正确的,但您需要传递要拆分的字符:

do.call(rbind, strsplit(as.character(df$a), "_"))
#      [,1]   [,2]     
# [1,] "898"  "Me"     
# [2,] "3467" "You or "
# [3,] "234"  "Hi-hi"  
# [4,] "222"  "what"   

library(tidyr)

a根据您的示例,下面是我在base R中的解决方案:

df$a2 <- gsub("[^0-9]", "", a)
df$d <- gsub("[0-9]", "", a)

虽然不美观,但它保留了原始数据且易于应用。

请您在数据框上举例说明您的答案好吗?我就是做不到:
split
strsplit(as.character(df$a),“”)
。他们的示例代码将“df$a”作为一个因子,而不是字符。同样值得向OP指出的是,它给出的数字将是一个字符而不是数字类。
aI只是想将数字id从字符串中分离出来,并在一个数据帧内实现这一点。数字和字符串之间是否总是有
永远不要包含自己的
?(
不是
-
)你也可以做
提取(df,a,c(“d”,“e”),“(\\d+)(\\d+),remove=FALSE)
,以便在一行中实现相同的效果,尽管我认为这里不需要任何其他东西,而只需按
谢谢@davidernburg的建议。我不知道
extract
函数。它属于哪个包裹?
                       a    d        b   c
                      898   Me       1   2
                      3467  You or   8   3
                      234   Hi-hi    3   6
                      222   what     8   2   
do.call(rbind, strsplit(as.character(df$a), "_"))
#      [,1]   [,2]     
# [1,] "898"  "Me"     
# [2,] "3467" "You or "
# [3,] "234"  "Hi-hi"  
# [4,] "222"  "what"   
library(stringi)
stri_split_fixed(df$a, "_", simplify = TRUE)
library(tidyr)

a<-c("898_Me","3467_You or ", "234_Hi-hi", "222_what")

b<-c(1,8,3,8)

c<-c(2,4,6,2)

df <-data.frame(a,b,c)

final_df <- separate(df , a , c("a" , "d") , sep = "_")

#    a       d b c
#1  898      Me 1 2
#2 3467 You or  8 4
#3  234   Hi-hi 3 6
#4  222    what 8 2

final_df$d

# [1] "Me"      "You or " "Hi-hi"   "what"  
df$a2 <- gsub("[^0-9]", "", a)
df$d <- gsub("[0-9]", "", a)
> df
             a b c   a2        d
1       898_Me 1 2  898      _Me
2 3467_You or  8 4 3467 _You or 
3    234_Hi-hi 3 6  234   _Hi-hi
4     222_what 8 2  222    _what