R 在数据行对中执行差异
我的数据框是:R 在数据行对中执行差异,r,R,我的数据框是: df: one two three a 8 x a 12 y b 9 x b 3 y 结果应该是: one two a 4 b 6 你能帮帮我吗 您可以尝试: library(data.table) setDT(df)[, .(two = abs(diff(two))), .(one)] 带plyr包装: library(plyr)
df:
one two three
a 8 x
a 12 y
b 9 x
b 3 y
结果应该是:
one two
a 4
b 6
你能帮帮我吗 您可以尝试:
library(data.table)
setDT(df)[, .(two = abs(diff(two))), .(one)]
带plyr
包装:
library(plyr)
ddply(df, 'one', summarise, two = abs(diff(two)))
one two
1 a 4
2 b 6
您可以尝试:
library(data.table)
setDT(df)[, .(two = abs(diff(two))), .(one)]
带plyr
包装:
library(plyr)
ddply(df, 'one', summarise, two = abs(diff(two)))
one two
1 a 4
2 b 6
下面是一个使用聚合的基本R方法:
aggregate(two~one, data=df, FUN=function(i) abs(diff(i)))
数据
df <- read.table(header=T, text="one two three
a 8 x
a 12 y
b 9 x
b 3 y")
df这里是一个使用聚合的基本R方法:
aggregate(two~one, data=df, FUN=function(i) abs(diff(i)))
数据
df <- read.table(header=T, text="one two three
a 8 x
a 12 y
b 9 x
b 3 y")
df这里有另一种使用dplyr的方法
library(dplyr)
df <- data.frame(one = factor(c("a", "a", "b", "b")),
two = c(8,12,9,3),
three = factor(c("x", "y", "x", "y")))
answer <- df %>% group_by(one) %>% summarise(two = abs(diff(two)))
> answer
Source: local data frame [2 x 2]
one two
(fctr) (dbl)
1 a 4
2 b 6
库(dplyr)
df%汇总(两个=绝对值(差异(两个)))
>答复
来源:本地数据帧[2 x 2]
12
(fctr)(dbl)
1 a 4
2 b 6
这里有另一种使用dplyr的方法
library(dplyr)
df <- data.frame(one = factor(c("a", "a", "b", "b")),
two = c(8,12,9,3),
three = factor(c("x", "y", "x", "y")))
answer <- df %>% group_by(one) %>% summarise(two = abs(diff(two)))
> answer
Source: local data frame [2 x 2]
one two
(fctr) (dbl)
1 a 4
2 b 6
库(dplyr)
df%汇总(两个=绝对值(差异(两个)))
>答复
来源:本地数据帧[2 x 2]
12
(fctr)(dbl)
1 a 4
2 b 6
谢谢您的ans,但是没有data.table library,还有其他方法可以获得结果吗..您也可以使用plyr
软件包。请参阅更新的答案。感谢您的ans,但是是否有其他方法可以在没有data.table library的情况下获得结果。您也可以使用plyr
package。请参阅更新后的答案。差异应为绝对值还是必须为x-y?差异应为绝对值还是必须为x-y?