r - 拆分字符串并转置结果

标签 r data.table dplyr

我有一个数据集,它在沿着中央骨架的每个像素位置都有宽度。宽度以逗号分隔的单个字符串形式输出。

cukeDatatest <- read.delim("https://gist.githubusercontent.com/bhive01/e7508f552db0415fec1749d0a390c8e5/raw/a12386d43c936c2f73d550dfdaecb8e453d19cfe/widthtest.tsv")
str(cukeDatatest) # or dplyr::glimpse(cukeDatatest)

我需要用宽度保留 File 和 FruitNum 标识符。

我想要的输出有三列 File、FruitNum、ObjectWidth,但 File 和 FruitNum 重复了该水果的 ObjectWidth 的长度。位置很重要,所以对这些向量进行排序会非常糟糕。此外,每个水果的长度都不同(如果这对您的方法很重要)。

我以前使用过 str_split() 从字符串中剖析一些元素,但从来没有这么大的东西,也没有这么多(我有 8000 个)。处理时间是一个问题,但会等待正确的结果。

我更习惯于dplyr而不是data.table,但我看到Arun在这方面做了一些努力:R split text string in a data.table columns

最佳答案

使用 splitstackshape包裹

library(splitstackshape)
res <- cSplit(cukeDatatest, splitCols = "ObjectWidth", sep = ",", direction = "long")

# result
head(res)
#                            File FruitNum ObjectWidth
# 1: IMG_7888.JPGcolcorrected.jpg        1           4
# 2: IMG_7888.JPGcolcorrected.jpg        1          10
# 3: IMG_7888.JPGcolcorrected.jpg        1          14
# 4: IMG_7888.JPGcolcorrected.jpg        1          15
# 5: IMG_7888.JPGcolcorrected.jpg        1          22
# 6: IMG_7888.JPGcolcorrected.jpg        1          26

关于r - 拆分字符串并转置结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37262008/

相关文章:

r - 按ID分组并仅过滤平均值最大的组

r - 如何在弹出窗口中添加下载按钮?

tidyverse 中的重复变异

r - 如何更改 data.table 中因子列的级别

r - 包含 "_"的单独字符串

r - R 数据帧中的增量 ID

r - 将变量从 bash 翻译成 R

c++ - 通过引用修改单独函数中 Rcpp::List 的子部分

r - 将 Stata 转换为 R : collapse

r - data.table roll ="nearest"返回多个结果