r - 如何按R中列的条件填充NA行
问题描述
这是一个例子:
df<-data.frame(v1=rep(1:2, 4),
v2=rep(c("a", "b"), each=4),
v3=paste0(rep(1:2, each=4), rep(c("m", "n", "o", "p"), each=2)),
v4=c(1,2, NA, NA, 3,4, NA,NA),
v5=c(5,6, NA, NA, 7,8, NA,NA),
v6=c(9,10, NA, NA, 11,12, NA,NA))
df
v1 v2 v3 v4 v5 v6
1 1 a 1m 1 5 9
2 2 a 1m 2 6 10
3 1 a 1n NA NA NA
4 2 a 1n NA NA NA
5 1 b 2o 3 7 11
6 2 b 2o 4 8 12
7 1 b 2p NA NA NA
8 2 b 2p NA NA NA
我想要的是,如果通过忽略 的最后一个字母,列v1
++相同,v2
则从不是的行中填充。在这种情况下,由于相同的 1a1,row3 的 NA 应该由 row1 填充,忽略 m。所以期望的输出是:v3
v3
NAs
NA
v1 v2 v3 v4 v5 v6
1 1 a 1m 1 5 9
2 2 a 1m 2 6 10
3 1 a 1n 1 5 9
4 2 a 1n 2 6 10
5 1 b 2o 3 7 11
6 2 b 2o 4 8 12
7 1 b 2p 3 7 11
8 2 b 2p 4 8 12
解决方案
我不知道,但我认为这是产生结果的更简单方法
library(tidyverse)
df %>%
group_by(v1,v2) %>%
fill(v4:v6)
添加 v3 逻辑
df %>%
mutate(v7 = v3 %>% as.character() %>% parse_number()) %>%
group_by(v1,v2,v7) %>%
fill(v4:v6) %>%
select(-v7)
推荐阅读
- java - 对于两个整数用户输入,如何检测在第一个输入上传递了一个字符串?
- java - 将列表值获取到二维数组并检索
- java - 为什么程序在我的 showPanel 方法中的 setVisible 处抛出错误“找不到符号”?
- php - 传递连接字符串时,我无法在 PHP 中删除目录?
- android - 如何获取Android内部下载目录的路径?
- swift - 如何将自定义类的子类添加到 GameScene?
- android-studio - 如何使用 Chromebook 上的 Android Studio 将应用程序部署到 Android 手机?
- javascript - 从结帐中删除国家/地区,但不从购物车中删除
- c++ - 使用系统 C++ 杀死进程
- django - create() 接受 1 个位置参数,但给出了 2 个