如何在R中获得一个数据帧(长表)中两个组的差异?
我有一个给定的数据帧:如何在R中获得一个数据帧(长表)中两个组的差异?,r,dataframe,R,Dataframe,我有一个给定的数据帧: days classtype scores 1 1 a 49 2 1 b 47 3 2 a 36 4 2 b 41 它由以下给定代码生成: days=c(1,1,2,2) classtype=c("a","b","a","b") scores=c(49,47,36,41) myData=data.frame(days,classtype,score
days classtype scores
1 1 a 49
2 1 b 47
3 2 a 36
4 2 b 41
它由以下给定代码生成:
days=c(1,1,2,2)
classtype=c("a","b","a","b")
scores=c(49,47,36,41)
myData=data.frame(days,classtype,scores)
print(myData)
我需要在代码中添加哪些行来计算每天两门课的分数差?我希望获得以下输出:
days difference_in_scores
1 1 2
2 2 -5
你可以采取的一种方法
library(dplyr)
library(reshape2)
days=c(1,1,2,2)
classtype=c("a","b","a","b")
scores=c(49,47,36,41)
myData=data.frame(days,classtype,scores)
myData %>%
# convert the data to wide format
dcast(days ~ classtype,
value.var = "scores") %>%
# calculate differences
mutate(difference_in_scores = a - b) %>%
# remove columns (just to match your desired output)
select(days, difference_in_scores)
你可以采取的一种方法
library(dplyr)
library(reshape2)
days=c(1,1,2,2)
classtype=c("a","b","a","b")
scores=c(49,47,36,41)
myData=data.frame(days,classtype,scores)
myData %>%
# convert the data to wide format
dcast(days ~ classtype,
value.var = "scores") %>%
# calculate differences
mutate(difference_in_scores = a - b) %>%
# remove columns (just to match your desired output)
select(days, difference_in_scores)
如果数据的格式与您所显示的一致,则可以使用
数据非常简洁地完成此操作。表:
setDT(myData)
myData[, diff(scores), by = days]
days V1
1: 1 -2
2: 2 5
或者只使用base-R:
aggregate(scores ~ days, myData, FUN = diff)
如果数据的格式与您所显示的一致,则可以使用数据非常简洁地完成此操作。表:
setDT(myData)
myData[, diff(scores), by = days]
days V1
1: 1 -2
2: 2 5
或者只使用base-R:
aggregate(scores ~ days, myData, FUN = diff)