return 多列的差异作为一个用“,”分隔的向量

return difference of multiple columns as a vector separated by ","

我有以下格式的数据集。 V1V2V3 填充日期(一个月内)。我想填充我的输出列,一个由 ","

分隔的列差异向量
ID  V1   V2  V3    #Output Column
1   08   21  26         13,5
2   11   13  19          2,6 
3   13   17  21          4,4
4   06   11  16          5,5
5   07   09  11          2,2
6   02   05  09          3,4

提前致谢

试试,

df$ouput <- paste(df$V2 - df$V1,",",df$V3 - df$V2, sep = "")

考虑将 df 作为您的数据框

使用diff

一些数据:

> V1 = c(8,11,13,6,7, 2)
> V2 = c(21,13,17,11,09,05)
> V3 = c(26,21,16,11, 9)

解决方案:

rbind(diff(rbind(V1,V2)), diff(rbind(V2,V3)))

请尝试以下代码。
假设数据已存储在 table name as TEMP_TABLE.
1.请运行下方查询
2. select concat( concat(V1-V2, ','), V2-V3) 来自 TEMP_TABLE
3.需要的数据会来。

谢谢

无需键入每个列组合的解决方案:

dat$output <- apply(t(apply(dat[,-1], 1, diff)), 1, paste, collapse = ",")

给出:

> dat
  ID V1 V2 V3 output
1  1  8 21 26   13,5
2  2 11 13 19    2,6
3  3 13 17 21    4,4
4  4  6 11 16    5,5
5  5  7  9 11    2,2
6  6  2  5  9    3,4

解释:

使用 t(apply(dat[,-1], 1, diff)) 可以创建列之间差异的矩阵。通过将其包装在另一个 apply 调用 (apply(x, 1, paste, collapse = ",")) 中并将其分配给输出列。使用 dat[,-1],您可以从差异计算中排除 id 列。