首页 > 解决方案 > 访问数据框列中列表中的特定实例,并计算列表长度 - R

问题描述

我有一个由列组成的 R 数据框。一列包含列表:即

      Column
      1,2,4,7,9,0
      5,3,8,9,0
      3,4
      5.8,9,3.5
      6
      NA
      7,4,3

我想创建计算这些列表长度的列:

Column            Count
1,2,4,7,9,0       6
5,3,8,9,0         5
3,4               2
5.8,9,3.5        3
6                1
NA               NA
7,4,3            3

另外,有没有办法访问这些列表中的特定实例?即用每个列表的第一个实例创建一个新列?还是每个的最后一个实例?

标签: r

解决方案


count.fields为文本文件服务,也可以强制使用列:

df$Count <- count.fields(textConnection(df$Column), sep=",")
df$Count[is.na(df$Column)] <- NA

df
#       Column Count
#1 1,2,4,7,9,0     6
#2   5,3,8,9,0     5
#3         3,4     2
#4   5.8,9,3.5     3
#5           6     1
#6        <NA>    NA
#7       7,4,3     3

在更一般的说明中,您最好将列转换为列表,或将数据堆叠为长格式,以使其更易于使用:

df$Column <- strsplit(df$Column, ",")
lengths(df$Column)
#[1] 6 5 2 3 1 1 3
sapply(df$Column, `[`, 1)
#[1] "1"   "5"   "3"   "5.8" "6"   NA    "7"  

stack(setNames(df$Column, seq_along(df$Column)))
#   values ind
#1       1   1
#2       2   1
#3       4   1
#4       7   1
#5       9   1
#6       0   1
#7       5   2
#8       3   2
#9       8   2
# etc

推荐阅读