r - 使用 ifelse 编辑具有多个时间点的数据框
问题描述
我有这个数据框:
id <- c(1, 1, 2, 2, 3, 3)
x <- c(0, 0, 0, 0, 0, 0)
y <- c(NA, 5, 5, 5, NA, 5)
t <- c(1, 2, 1, 2, 1, 2)
df <- data.frame(id, t, x, y)
df
id t x y
1 1 1 0 NA
2 1 2 0 5
3 2 1 0 5
4 2 2 0 5
5 3 1 0 NA
6 3 2 0 5
id
并t
在两个时间点参考三个案例。x
并且y
是一些随机值。现在我想将 9 添加到向量x
in t = 2
,但前提是y
int = 1
是 NA。
输出应如下所示:
> df
id t x y
1 1 1 0 NA
2 1 2 9 5
3 2 1 0 5
4 2 2 0 5
5 3 1 0 NA
6 3 2 9 5
我很感激任何帮助。此外,使用 ifelse 的解决方案会很棒。
解决方案
我假设您想按组执行此操作。
这里对于id
我们添加x + 9
的每个t ==2
if y
at t==1
is NA
。
library(dplyr)
df %>%
group_by(id) %>%
mutate(x = ifelse(is.na(y[t==1]) & t == 2, x + 9, x))
# id t x y
# <dbl> <dbl> <dbl> <dbl>
#1 1. 1. 0. NA
#2 1. 2. 9. 5.
#3 2. 1. 0. 5.
#4 2. 2. 0. 5.
#5 3. 1. 0. NA
#6 3. 2. 9. 5.
推荐阅读
- c - 仅当我打印了属性的值时,功能才能正常工作
- jquery - 为什么调用 location.reload(); 后我的表中的行顺序会发生变化?关闭模态框时
- django - Vue中使用axios请求后端接口出错
- c++ - LLVM:没有识别的结构
- light-4j - 我们如何在 logback.xml 中为 light-4j 应用程序集成访问日志?
- python - 如何在python中从右到左使用非贪婪的正则表达式?
- django - 在控制台而不是日志文件中查看主管执行
- excel - power bi 中的数据导出在网络上发布(公共)
- python - 如何使用 Qt Designer 程序将 QWidget 放在不依赖于 Pyside2 中屏幕尺寸的中间?
- bash - 在 shell 脚本中创建数组