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避免在评论中提出新问题,作为新问题发布。