r - 如何在整齐的数据行之间进行数学运算?
问题描述
我想比较两个结果,一个来自 2018 年,另一个来自 2017 年,假设是两所学校。
在电子表格上,我将有一列 for result2017
,另一列 for result2018
,我会在新列上执行类似result2018-result2017
的操作并获取每行所需的比较。
但是在整洁的数据中,或者至少我认为是整洁的数据,我不知道。
我发现的大多数教程都是关于如何使用收集或传播,而不是关于当你已经创建整洁的数据时该怎么做(这可能还没有)。
最小的可重现示例:
dd <- tibble(
school=c("A","A","B","B"),
year=c("2017","2018","2017","2018"),
result=c(20,40,25,45)
)
解决方案
我们可以spread
在paste
'year' 列中的 'result' 字符串之后,然后做区别
library(dplyr)
library(tidyr)
library(stringr)
dd %>%
mutate(year = str_c('result', year)) %>%
spread(year, result) %>%
mutate(comparison = result2018 - result2017)
如果打算在原始数据集中创建一列
dd %>%
group_by(school) %>%
mutate(comparison = result[year == 2018] - result[year == 2017])
推荐阅读
- python - 颜色条定位 Matplotlib
- typescript - 按对象键的通用数据
- php - 从 iframe 获取实际 php 格式的源代码的任何方法
- html - 需要在网页内运行.exe游戏文件
- openlayers - Openlayers 6:简化功能
有属性 - flutter - 如何解决flutter.gradle和flutter.bat错误?Script 'C:\src\flutter\packages\flutter_tools\gradle\flutter.gradle' && flutter.bat错误
- sql - 在 oracle SQL 中基于重叠日期范围连接客户端记录
- oracle - oracle中函数和年份变量之间的关系
- java - XADES4J:java.lang.NoSuchMethodError:org.apache.xml.security.signature.XMLSignature
- tensorflow - Tensorflow 无法获取设备 0 的设备属性 13