R 分隔_行,围绕结果生成引号

R 分隔_行,围绕结果生成引号,r,tidyr,R,Tidyr,separate_rows在操作后围绕结果值生成引号(“)。这是正常行为吗?如何在同一操作中防止它,而不在操作后显式删除它们 df <- data.frame(a = c("c_1", "c_2", "c_3", "c_4", "c_5"), b = c("a (+1)", "b (+2)", "a (+2

separate_rows
在操作后围绕结果值生成引号(
)。这是正常行为吗?如何在同一操作中防止它,而不在操作后显式删除它们

df <- data.frame(a = c("c_1", "c_2", "c_3", "c_4", "c_5"), 
                 b = c("a (+1)", "b (+2)", "a (+2), c (+5)", "e (+2)", "b (+2), e (+5)")) 

    a              b
1 c_1         a (+1)
2 c_2         b (+2)
3 c_3 a (+2), c (+5)
4 c_4         e (+2)
5 c_5 b (+2), e (+5)

df %>%  tidyr::separate_rows(b, sep = ",", convert = TRUE)
# # A tibble: 7 x 2
#     a     b        
#   <chr> <chr>    
# 1 c_1   "a (+1)" 
# 2 c_2   "b (+2)" 
# 3 c_3   "a (+2)" 
# 4 c_3   " c (+5)"
# 5 c_4   "e (+2)" 
# 6 c_5   "b (+2)" 
# 7 c_5   " e (+5)"
df%tidyr::单独的_行(b,sep=“,”,convert=TRUE)
##A tibble:7 x 2
#a b
#        
#1 c_1“a(+1)”
#2 c_2“b(+2)”
#3 c_3“a(+2)”
#4立方英尺3立方英尺(+5)
#5 c_4“e(+2)”
#6 c_5“b(+2)”
#7 c_5“e(+5)”

问题是将一行拆分为多行。我的尝试中已经显示了这一点,代码可以实现这一点。

sep
中的逗号后添加空格:

tidyr::separate_rows(df, b, sep = ",\\s", convert = TRUE)

#  a     b     
#  <chr> <chr> 
#1 c_1   a (+1)
#2 c_2   b (+2)
#3 c_3   a (+2)
#4 c_3   c (+5)
#5 c_4   e (+2)
#6 c_5   b (+2)
#7 c_5   e (+5)
tidyr::独立的_行(df、b、sep=“,\\s”,convert=TRUE)
#a b
#    
#1 c_1 a(+1)
#2 c_2 b(+2)
#3 c_3 a(+2)
#4摄氏度3摄氏度(+5)
#5 c_4 e(+2)
#6c_5b(+2)
#7 c_5 e(+5)

这里有一个
数据表
选项

setDT(df)
df[,strsplit(b,", "), by = a]
给予

    a     V1
1: c_1 a (+1)
2: c_2 b (+2)
3: c_3 a (+2)
4: c_3 c (+5)
5: c_4 e (+2)
6: c_5 b (+2)
7: c_5 e (+5)

这些引用并不像你想象的那样,这只是tidyverse打印的方式——试图表明存在空白。请参见以下内容:

library(tidyverse)

x1 <- df %>% separate_rows(b, sep = ",", convert = TRUE)
x2 <- as.data.frame(x1)

x1
# # A tibble: 7 x 2
#   a     b        
#   <chr> <chr>    
# 1 c_1   "a (+1)" 
# 2 c_2   "b (+2)" 
# 3 c_3   "a (+2)" 
# 4 c_3   " c (+5)"
# 5 c_4   "e (+2)" 
# 6 c_5   "b (+2)" 
# 7 c_5   " e (+5)"

x2
#     a       b
# 1 c_1  a (+1)
# 2 c_2  b (+2)
# 3 c_3  a (+2)
# 4 c_3  c (+5)
# 5 c_4  e (+2)
# 6 c_5  b (+2)
# 7 c_5  e (+5)

identical(x1$b, x2$b)
# [1] TRUE
库(tidyverse)
x1%单独的_行(b,sep=“,”,convert=TRUE)

x2谢谢您的回答,我可以在10分钟后接受。您能建议是否可以在操作中提取带加号的数字吗?@Prradep避免在评论中提出新问题,作为新问题发布。