【发布时间】:2014-07-11 14:40:30
【问题描述】:
我有一个带有变量的 data.frame,其中包含许多参与者的姓名。参与者的姓名都包含在一个 (=1) 长字符串中,名称用逗号分隔。有些名字是重复的。我尝试只获取每个名称一次。
数据下方。
我将一长串名字转换成一个列表:
b$s <- strsplit(b$participants, ",")
然后我删除了名称两侧的空格以使其标准化。
library(stringr)
b.l <- unlist(b$s)
b.l <- str_trim(b.l, side="both")
我从这个列表中获取了唯一值
b.l <- unique(unlist(b.l))
结果都是唯一的名字:
"Takfir wa'l Hijra" "AIS" "GIA" "AQIM" "MUJAO" "FLEC-R" "FLEC-FAC"
但是,此列表包含所有唯一名称。我只想为每个 ID(会话号)执行这些步骤,这也可以重复。
我尝试使用 ddply 执行上述操作,但无济于事。有什么推荐吗?不幸的是,我对列表的处理不是很熟悉。
最终,数据框应如下所示:
id unique.participants
1-191 Takfir wa'l Hijra, AIS, GIA, AQIM, MUJAO
1-191 Takfir wa'l Hijra, AIS, GIA, AQIM, MUJAO
1-192 FLEC-R, FLEC-FAC
非常感谢。
data.frame:
b<–structure(list(id = structure(c(1L, 1L, 2L), .Label = c("1-191",
"1-192", "1-131"), class = "factor"), participants = c("Takfir wa'l Hijra,AIS,AIS, GIA,AIS, GIA,AIS, GIA,AIS, GIA,AIS, GIA,GIA,AQIM, GIA,AQIM, GIA,AQIM, GIA,AQIM, GIA,AQIM, GIA,AQIM,AQIM,AQIM,AQIM,AQIM,AQIM,AQIM,AQIM,AQIM, MUJAO,AQIM",
"Takfir wa'l Hijra,AIS,AIS, GIA,AIS, GIA,AIS, GIA,AIS, GIA,AIS, GIA,GIA,AQIM, GIA,AQIM, GIA,AQIM, GIA,AQIM, GIA,AQIM, GIA,AQIM,AQIM,AQIM,AQIM,AQIM,AQIM,AQIM,AQIM,AQIM, MUJAO,AQIM",
"FLEC-R,FLEC-FAC, FLEC-R,FLEC-FAC,FLEC-FAC, FLEC-R,FLEC-FAC,FLEC-FAC, FLEC-R,FLEC-FAC,FLEC-FAC,FLEC-FAC"
), s = list(c("Takfir wa'l Hijra", "AIS", "AIS", " GIA", "AIS",
" GIA", "AIS", " GIA", "AIS", " GIA", "AIS", " GIA", "GIA", "AQIM",
" GIA", "AQIM", " GIA", "AQIM", " GIA", "AQIM", " GIA", "AQIM",
" GIA", "AQIM", "AQIM", "AQIM", "AQIM", "AQIM", "AQIM", "AQIM",
"AQIM", "AQIM", " MUJAO", "AQIM"), c("Takfir wa'l Hijra", "AIS",
"AIS", " GIA", "AIS", " GIA", "AIS", " GIA", "AIS", " GIA", "AIS",
" GIA", "GIA", "AQIM", " GIA", "AQIM", " GIA", "AQIM", " GIA",
"AQIM", " GIA", "AQIM", " GIA", "AQIM", "AQIM", "AQIM", "AQIM",
"AQIM", "AQIM", "AQIM", "AQIM", "AQIM", " MUJAO", "AQIM"), c("FLEC-R",
"FLEC-FAC", " FLEC-R", "FLEC-FAC", "FLEC-FAC", " FLEC-R", "FLEC-FAC",
"FLEC-FAC", " FLEC-R", "FLEC-FAC", "FLEC-FAC", "FLEC-FAC"))), .Names = c("id",
"participants", "s"), row.names = c(1L, 2L, 24L), class = "data.frame")
【问题讨论】:
-
您是希望将结果作为
list还是希望将它们重新组合为pasted?