R 基于包含多个字符串的特定列的唯一行
我想根据R 基于包含多个字符串的特定列的唯一行,r,split,unique,R,Split,Unique,我想根据值列将data.frame,all拆分为唯一的行: alldataframe: seq start value ch1 20 "NE001", "NE002" ch2 30 "NE002", "NE003" ch3 40 "NE001", "NE002", "NE003" 我的预期产出: seq start value ch1 20 NE001 ch1 20 NE002 ch2 30 NE002 ch2 30
值
列将data.frame,all
拆分为唯一的行:
all
dataframe:
seq start value
ch1 20 "NE001", "NE002"
ch2 30 "NE002", "NE003"
ch3 40 "NE001", "NE002", "NE003"
我的预期产出:
seq start value
ch1 20 NE001
ch1 20 NE002
ch2 30 NE002
ch2 30 NE003
ch3 40 NE001
ch3 40 NE002
ch3 40 NE003
有什么想法吗?谢谢大家! 这里有一个稍微巧妙的方法来实现它
d <- data.frame(seq=c('ch1', 'ch2', 'ch3'),
start=c(20, 30, 40),
value=c('"NE001", "NE002"',
'"NE002", "NE003"',
'"NE001", "NE002", "NE003"'))
# sub out quotes and split values into vectors
v <- strsplit(gsub('"', '', d$value), ', ')
cbind(d[rep(seq_along(v), sapply(v, length)), 1:2],
value=unlist(v))
# seq start value
# 1 ch1 20 NE001
# 1.1 ch1 20 NE002
# 2 ch2 30 NE002
# 2.1 ch2 30 NE003
# 3 ch3 40 NE001
# 3.1 ch3 40 NE002
# 3.2 ch3 40 NE003
d我怀疑您的值的格式。您确定value
的每个元素都是以逗号分隔的带引号的子字符串吗?可能包括您向我们展示的示例数据的dput
输出。是的,原始格式类似于c(“NE001”、“NE001”)
等等,在值中。我使用了gsub排除括号。@jbaums这是完全可能的<代码>数据帧(x=I(列表(1:2))