【发布时间】:2014-04-14 02:57:05
【问题描述】:
我有一个data.frame data:
Sector Var1 Var2 Var3
Abcd 1 1 1
Efgh 4 5 6
Ijkl 7 8 9
我想创建一个新的 data.frame,其中包含每个变量的 Sector 的每个唯一配对之间的差异。期望结果的示例如下:
# result
Sector1 Sector2 Dif_Var1 Dif_Var2 Dif_Var3
Abcd Efgh 3 4 5
Abcd Ijkl 6 7 8
Efgh Ijkl 3 3 3
我可以找到Sector 的每个唯一对(下面的代码),但我不确定这是否是继续的方法。下面这个最小的伪代码似乎是一条合适且可能成功的路线吗?
# pseudo code
result <- which(Sector1 == Sector) get Var1,2,3 values - which(Sector2 == Sector) get Var1,2,3 values
是否有 r 函数或包可以帮助达到预期的结果?
# unique pairings
# http://stackoverflow.com/q/23024059/1670053
df <- structure(list(Sector = structure(1:3, .Label = c("Abcd", "Efgh",
"Ijkl"), class = "factor"), Var1 = c(1L, 4L, 7L), Var2 = c(1L,
5L, 8L), Var3 = c(1L, 6L, 9L)), .Names = c("Sector", "Var1",
"Var2", "Var3"), class = "data.frame", row.names = c(NA, -3L))
df.u <- expand.grid(df$Sector,df$Sector)
df.u2 <- as.data.frame(unique(t(apply(df.u, 1, function(x) sort(x)))))
data <- subset(df.u2, ! df.u2$V1 == df.u2$V2)
【问题讨论】:
标签: r dataframe plyr apply difference