将多列的差异作为由“,”分隔的向量返回

时间:2015-09-18 06:13:11

标签: r dataframe difference

我有以下格式的数据集。 V1V2& V3填充了日期(一个月内)。我想填充我的输出列,一个由“,”

分隔的列差异向量
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

先谢谢

4 个答案:

答案 0 :(得分:4)

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

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列。

答案 1 :(得分:1)

尝试,

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

df视为您的数据框

答案 2 :(得分:0)

使用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)))

答案 3 :(得分:-1)

请尝试以下代码。
假设数据已作为TEMP_TABLE存储在表名中 1.请在下面查询 2.从TEMP_TABLE中选择concat(concat(V1-V2,','),V2-V3) 3.所需的数据将会到来。

由于