r - 如何从列中选择数据并在 R 中生成 nw 列
问题描述
我想生成一个新列来使用 ID 显示期间数据。
我的数据与此数据相似
df1<-read.table(text="ID Location Day Period Group
241 A am M1 A
231 D am N1 A
241 N pm M2 A
234 K pm N2 B
231 G pm N2 B
300 K am M2 A",header=TRUE)
预期的数据是:
df1<-read.table(text="ID Location Day Period Group Match
241 A am M1 A M2
231 D am N1 A N2
234 K pm N2 B NA
300 K am M2 A NA",header=TRUE)
如果有重复的 ID,则只保留一个 Id,并且在 Match 列中处理期间的值。我想要空白而不是 NA
解决方案
尝试这个
library(dplyr)
df1 %>%
filter(!duplicated(ID)) %>%
left_join(
df1 %>%
filter(duplicated(ID)) %>%
select(ID, Period), by = "ID") %>%
rename(Period = Period.x, Match = Period.y)
或使用group_split
library(dplyr)
library(purrr)
df1 %>%
mutate(is_duplicated = duplicated(ID)) %>%
group_split(is_duplicated, keep = FALSE) %>%
reduce(left_join, by = "ID", suffix = c("", "_match")) %>%
select(names(df1), Match = Period_match)
推荐阅读
- laravel - Laravel - 如何计算两天之间的假期数
- html - 如何创建边框底部?
- excel - 运行循环宏时 Excel 崩溃
- python - 将英国邮政编码映射到地理边界以进行绘图
- selenium - Selenium webdriver中的隐式等待如何工作
- jquery - 通过 jQuery AJAX 发送时,“&”之后的所有内容都会丢失
- performance - Unity Profiler:Update.Preloading cpu 峰值
- elasticsearch - Elasticsearch:NEST 中具有基数的复合聚合
- python - 在 Python 中计算和使用欧几里得距离
- json - 如何验证子属性在对象的所有子项中仅设置一次