我有 3 列。第一列是完整的,但是第二列和第三列是不完整的,我想根据所有 3 列中的现有值来完成它们。这是一个例子:
number a b
1 Q V
2 R W
3 S X
4 T Y
5 U Z
3 S X
2 R W
4 T Y
1 Q V
5 U Z
4
1
5
3
2
2
4
3
5
1
我需要做的是转到“a”列中的第一个空值,查看“number”列中的值(4),找到“number”对应的“a”和“b”的值(4 ),然后将这些值插入到“a”和“b”列中——然后转到下一个缺失值。
我遇到了一个使用两个数据框的解决方案。一个名为“df”的数据帧是本文开头显示的原始表格,第二个数据帧(称为“df2”)是一个键:
number a b
1 Q V
2 R W
3 S X
4 T Y
5 U Z
3 S X
2 R W
4 T Y
1 Q V
5 U Z
然后,我可以使用 df1 中的值将值填充到 df 中
df$a <- df2$a[ match(df$number, df2$number)]
df$b <- df2$b[ match(df$number, df2$number)]
这给出了新的df
number a b
1 Q V
2 R W
3 S X
4 T Y
5 U Z
3 S X
2 R W
4 T Y
1 Q V
5 U Z
4 T Y
1 Q V
5 U Z
3 S X
2 R W
2 R W
4 T Y
3 S X
5 U Z
1 Q V
这似乎对我有用!但是,我有一些悬而未决的问题/问题:
1)有没有更优雅或更有效的方法来做到这一点,最好只使用单个数据帧df?
2)要匹配“数字”,此方法是否仅使用该列中匹配的第一个实例?
3) 有没有一种好方法来测试现有的“a”和“b”值是否已正确分配(即相同“数字”的每个实例具有相同的“a”和“b”。这与问题#有关2 直接在上面。
感谢您对此的任何建议!