R:检索字符串向量列表中字符串的索引

标签 r dataframe

我是 R 初学者。我有一个像 foo 的数据框

a       b    c
"a"     1.0  1
"b,c"   0.9  2
"a,b"   0.8  3

目前,我只对 foo$a 列感兴趣。我需要做的是计算 foo$a 中每个可能条目的排名。 我已经做到了

foo$a <- strsplit(foo$a, ",", fixed=T)

为了获取这些条目的列表。我知道只存在 9 个可能的条目,我将它们存储在向量 entries 中。

我想为 entries 中的每个可能条目向 foo 添加一列,并在 foo$a 中保存该条目的索引。对于上面给出的示例,我想要的输出是:

a       b    c   rankA   rankB   rankC
"a"     1.0  1       1      NA      NA
"b,c"   0.9  2      NA       1       2
"a,b"   0.8  3       1       2      NA

R 中是否有内置函数可供我使用以实现该目标? 我尝试了 match%in%,但到目前为止我无法弄清楚如何让它们在向量列表上工作,其中 foo $a 是。

最佳答案

你可以这样做:

L        = strsplit(as.character(df[,1]),',')
vals     = unique(unlist(L))
newNames = paste0('rank', vals)

cbind(df, `colnames<-`(do.call(rbind, lapply(L, match, x=vals)), newNames))

#    a   b c ranka rankb rankc
#1   a 1.0 1     1    NA    NA
#2 b,c 0.9 2    NA     1     2
#3 a,b 0.8 3     1     2    NA

数据:

df = structure(list(a = structure(c(1L, 3L, 2L), .Label = c("a", "a,b", 
"b,c"), class = "factor"), b = c(1, 0.9, 0.8), c = 1:3), .Names = c("a", 
"b", "c"), class = "data.frame", row.names = c(NA, -3L))

关于R:检索字符串向量列表中字符串的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33805677/

相关文章:

r - 如何在空间上将不同系列的地毯图分开

r - 展开计数矩阵

python - 从时间序列的数据帧中获取失败和成功的数量

Python/ Pandas : Want Different Times of Day to by Unique DateTimes in DataFrame Index

r - 将列表列表转换为数据框

python - 使用 pandas GroupBy 检查组中的所有元素是否相等

重新访问变量 X 的无效类型(列表),其中 X 是日期类

r - 可以肯定地说不能使用 R 模拟非平稳序列吗

Python 按行在数据帧上应用函数

r - 如何在ggplot中标记每组的最小值和最大值?