R:如何匹配第1列中的值,并将第2列中的相邻值分配到第2列中的较低值

时间:2013-01-23 17:43:24

标签: r

我有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。

感谢您对此提出任何建议!

0 个答案:

没有答案