【发布时间】:2020-07-30 20:24:34
【问题描述】:
我对 R 还很陌生,遇到了一个有趣的问题。我的数据集有很多 NA,处理它们变得有点问题。
我有什么:
S1 S2 S3 S4
NA NA 3 4
1 3 NA NA
3 NA 5 NA
我想要做的:计算 Diff = S4 - S3 - S2 - S1。但是如果 S4 是 NA,那么它应该做 Diff = S3 - S2 - S1。依此类推……但如果假设 S4 和 S2 是 NA,那么 Diff 应该是 S3 - S1。
例如在第 2 行,答案应该是 2。(3-1)
我需要什么:
S1 S2 S3 S4 Diff
NA NA 3 4 1
1 3 NA NA 2
3 NA 5 NA 2
到目前为止我所写的:(但不适用于处理 NA)
data <- cbind(data, Diff = data$S4 - data$S3 -data$S2 -data$S1)
附加信息:原始问题中每列下的值是时间戳。
数据是什么样子的:
head(select(data,S4,S3,S2,S1))
S4 S3 S2 S1
1 2020-07-08 07:46:36 NA 2020-07-08 07:08:31 NA
2 2020-07-08 07:11:57 NA 2020-07-08 07:08:53 NA
3 2020-07-08 07:12:50 NA 2020-07-08 07:09:40 NA
4 2020-07-08 07:13:14 NA 2020-07-08 07:09:42 NA
5 2020-07-08 07:13:46 NA 2020-07-08 07:10:36 NA
6 2020-07-08 07:44:45 NA 2020-07-08 07:11:42 NA
数据集的更新版本: (包含数据集的最准确表示 - 时间戳转换为秒。)我需要什么? “差异”列。
S4 S3 S2 S1 Diff
1 NA 30 40 NA 10
1 NA 30 NA 40 10
1 10 30 40 50 40
1 30 NA 40 NA 10
1 10 30 40 NA 30
1 NA 30 40 50 20
在这里找到答案:Take difference between first and last observations in a row, where each row is different
【问题讨论】:
标签: r