我有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的值
将值填入dfdf$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。
感谢您对此提出任何建议!