r - 访问数据框列中列表中的特定实例,并计算列表长度 - 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
另外,有没有办法访问这些列表中的特定实例?即用每个列表的第一个实例创建一个新列?还是每个的最后一个实例?
解决方案
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
推荐阅读
- javascript - reader.onload 函数既不能读取值也不能调用函数
- python - 使用特定标签自动从 quora 中抓取多个问题?
- java - Netty 客户端无法读取来自非 Netty 服务器的响应
- reactjs - 设置状态以响应过滤数据
- magento - 将 Magento 1.9 移动到新服务器后出现“无效的用户名或密码”错误
- ruby-on-rails - 嵌套表单has_one没有设置表单属性rails 4
- python - return 语句中带有“或”的时间复杂度
- azure - 是否可以使用文件名模式创建一个 blob 触发的 azure 函数?
- typescript - 在 Playground 上的 TypeScript 中使用 OrbitControls
- c++ - C++ win表单如何在文本框中打印出一个void *?