With R
我想用升序/降序数字(整数)填充一列大部分为 NA 值的列,但相对于值为 0 的行。编号应按主题(第一列)分组。这听起来很混乱,所以请看这个例子。
数据如下所示(Column_3 是当前数据,Column_4 是目标数据):
Subject |
Visit |
Column_3 |
Column_4 |
001 |
Visit 1 |
NA |
-2 |
001 |
Visit 2 |
NA |
-1 |
001 |
Visit 3 |
0 |
0 |
001 |
Visit 4 |
NA |
1 |
001 |
Visit 5 |
NA |
2 |
002 |
Visit 1 |
NA |
-1 |
002 |
Visit 2 |
0 |
0 |
002 |
Visit 3 |
NA |
1 |
002 |
Visit 4 |
NA |
2 |
002 |
Visit 5 |
NA |
3 |
003 |
Visit 1 |
NA |
-3 |
003 |
Visit 2 |
NA |
-2 |
003 |
Visit 3 |
NA |
-1 |
003 |
Visit 4 |
0 |
0 |
003 |
Visit 5 |
NA |
1 |
因此,所有受试者都有一定的访问次数 (1-5),并且在第 3 列中用 0 表示某个访问次数(每个受试者不同)。在第 4 列中,我希望按照访问次数按升序排列数字用0表示。
目前我尝试制作一个管道dplyr
:
df <- df %>% group_by(Subject) %>%
mutate(
column 4 = lag(Column_3, 1),
code here
) %>%
ungroup()
我正在尝试利用fill()
and lag()
and lead()
,但我不知道在这种情况下如何有效地使用这些(不幸的是我也没有找到“低效”的方法)。
欢迎提出建议!
略有不同的选项:
library(tidyverse)
df %>%
group_by(Subject) %>%
mutate(column_4 = row_number() - row_number()[!is.na(column_3 == 0)]) %>%
ungroup()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)