r - 将 Stata 转换为 R:使用两个不同列的信息保存值
问题描述
我有一个这样的数据框:
df <- data.frame(date= c("2011-11-01", "2011-11-01", "2011-11-01", "2011-11-01"),
reference_year=c(2011, 2012, 2013, 2014),
mean=c(6.49, 5.55, 5.05, 4.87))
因此,我想在日期年份(2011)等于日期年份+ 1(2012)的情况下创建一个新的数据框。
使用Stata我只是使用了这段代码:
gen eventtime=date(date, "YMD")
gen day=day(eventtime)
gen month=month(eventtime)
gen yr=year(eventtime)
keep if reference_year == yr+1
collapse (first) mean date, by(eventtime)
但是,作为 R 初学者,我想在 R 中做。
解决方案
作为 R 初学者,以下内容可能没有多大意义。但本质上,我将date
变量拆分为 3 个变量(year
、month
、day
),然后过滤到reference_year - 1
. 这%>%
被称为“管道”,可以读作“然后执行此操作”。
library(tidyverse)
df <- data.frame(date= c("2011-11-01", "2011-11-01", "2011-11-01", "2011-11-01"),
reference_year=c(2011, 2012, 2013, 2014),
mean=c(6.49, 5.55, 5.05, 4.87))
new_df <- df %>%
separate(date, c("year", "month", "day"), sep = "-") %>%
filter(year == (reference_year - 1))
#> year month day reference_year mean
#> 1 2011 11 01 2012 5.55
推荐阅读
- vba - 如果第一行包含“结束日期”一词,则 Excel VBA 将列从工作表 1 复制到工作表 2
- java - Javamail从特定发件人获取所有电子邮件 - Thinbug
- android - 在 Android 移动设备上使用 Chrome 调试 service worker
- javascript - 调用JS函数不起作用
- javascript - 选择,折叠选项在 Safari 中不起作用
- mysql - 如何在具有 GROUP BY 和 HAVING 子句的查询中再添加一个连接?
- android - 当前 GPS 位置不断变化 - 任何平滑算法?
- angular - 离子插件错误:运行使用本机地理围栏 API 的应用程序时 plugin_not_installed
- r - 是否需要在 R 中为 prcomp() 输入协方差矩阵?
- android - 为什么只调用超级实现的方法覆盖会使我的应用程序崩溃