【发布时间】:2018-11-23 16:24:26
【问题描述】:
我在从 data.table 读取二维空间的坐标时遇到问题,如下所示:
DT <- data.table(
A = c(rep("aa",2),rep("bb",2)),
B = c(rep("H",2),rep("Na",2)),
Low = c(0,3,1,1),
High = c(8,10,9,8),
Time =c("0,1,2,3,4,5,6,7,8,9,10","0,1,2,3,4,5,6,7,8,9,10","0,1,2,3,4,5,6,7,8,9,10","0,1,2,3,4,5,6,7,8,9,10"),
Intensity = c("0,0,0,0,561464,0,0,0,0,0,0","0,0,0,6548,5464,5616,0,0,0,68716,0","5658,12,6548,6541,8,5646854,54565,56465,546,65,0","0,561464,0,0,0,0,0,0,0,0,0")
)
“时间”和“强度”列指的是 2D 空间的 x 和 y 值。 “低”和“高”列指的是 x 轴上的边界(“时间”)。 现在我想检查 () 那些边界内 y(“强度”)维度的不同质量:
- 连续点数最高>0:(row1: 1, row 2: 2,..)
- 总点数>0:(row1: 1, row2: 3,..)
- 连续点的最高数量>基线(基线值应取自低或高边界的强度值,以较低者为准(因此对于第 3 行,它将是 12,对于其他 0)):(第 3 行:4,对于所有其他行,与第 1 行相同。)
所以输出应该是这样的表格:
DT <- data.table(
A =c(rep("aa",2),rep("bb",2)),
B =c(rep("H",2),rep("Na",2)),
Low = c(0,3,1,1),
High = c(8,10,9,8),
Time = c("0,1,2,3,4,5,6,7,8,9,10","0,1,2,3,4,5,6,7,8,9,10","0,1,2,3,4,5,6,7,8,9,10","0,1,2,3,4,5,6,7,8,9,10"),
Intensity = c("0,0,0,0,561464,0,0,0,0,0,0","0,0,0,6548,5464,5616,0,0,0,68716,0","5658,12,6548,6541,8,5646854,54565,56465,546,65,0","0,561464,0,0,0,0,0,0,0,0,0"),
First = c(1,2,7,0),
Second= c(1,3,7,0),
Third = c(1,2,4,0)
)
有人知道如何处理这项任务吗?到目前为止,我一直在尝试使用 data.table,但如果有人知道更好的包来完成此类任务,我也会很高兴。
非常感谢您!
亚塞尔
【问题讨论】:
-
一个建议 - 当您创建 data.frame 或 data.table 时,直接使用它而不是
as.data.frame(cbind,因为cbind返回一个矩阵,并且矩阵只能有一个类。在这种情况下,由于某些字符列,所有数字列都会转换为字符 -
谢谢,已相应调整
-
描述与预期输出不匹配。当你说
highest number of consecutive points > 0时,为什么第0行是1。是基于V6列还是V5? -
请将所有的
-
我编辑了你的数据集。对于
data.table,默认stringsAsFactors = FALSE,同样赋值<-应该是=里面
标签: r data.table