quux <- structure(list(STUDENT = c(1L, 1L, 2L, 2L, 3L, 3L, 4L), CLASS = c("A", "B", "A", "B", "A", "B", "A"), ENG = c(9L, 2L, 7L, 5L, 8L, 0L, 1L), MATH = c(2L, 10L, 0L, 3L, 4L, 1L, 3L), HIST = c(8L, 1L, 0L, 1L, 6L, 6L, 2L)), class = "data.frame", row.names = c(NA, -7L))
STUDENT CLASS ENG MATH HIST
1 A 9 2 8
1 B 2 10 1
2 A 7 0 0
2 B 5 3 1
3 A 8 4 6
3 B 0 1 6
4 A 1 3 2
字符串
我有这个数据上面,并希望使这个数据下面
STUDENT ENG.DIF MATH.DIF HIST.DIF
1 -7 8 -9
2 -2 3 1
3 -8 -3 0
4 NA NA NA
型
对于每个记录,对ENG、MATH、HIST执行ENG[CLASS = 'B']- ENG[CLASS = 'A']。如果只存在一个记录,则NA值
我试着:DAT1 %>% group_by(STUDENT) %>% mutate(ENG.DIF = ENG[CLASS =='B'] - ENG[CLASS == 'A']
没有成功
5条答案
按热度按时间v1uwarro1#
使用dapr,您可以使用
summarize
来提供帮助。字符串
9avjhtql2#
我们可以在计算中添加一个简单的
if
:字符串
由于我们总是计算一个差值,我们可以利用
c()[1]
返回NA
的事实:型
数据
型
hrirmatl3#
首先,我们可以使用
complete
创建填充NA的缺失行,然后使用summarise
进行简单的减法。字符串
gpfsuwkq4#
字符串
结果
型
s8vozzvw5#
你可以像下面这样尝试
pivot_*
字符串
这给
型