我有两个数据框。每个都有两列。第一个df没有NA值,第二个df在第一列中有NA值。例如:
> myA
Foo Bar
1 blue G
2 brown I
3 black F
4 pink D
5 green H
6 orange J
7 purple K
8 red C
> myB
Foo Bar
1 NA A
2 NA B
3 NA E
我使用rbind加入他们,如下所示:
> newdata <- rbind(myA, myB)
> newdata
Foo Bar
1 blue G
2 brown I
3 black F
4 pink D
5 green H
6 orange J
7 purple K
8 red C
9 <NA> A
10 <NA> B
11 <NA> E
现在我使用第二列的顺序对df进行排序并得到:
> newSorted <- newdata[order(newdata$Bar),]
> newSorted
Foo Bar
8 red C
4 pink D
3 black F
1 blue G
5 green H
2 brown I
6 orange J
7 purple K
9 <NA> A
10 <NA> B
11 <NA> E
它似乎已经完成了对第二列上的每个原始df进行排序并对新df进行分段。那不是我想要达到的目标。我知道命令接受na.last的参数,但NA值在第一列,而我要求它在第二列上排序。我想得到:
Foo Bar
<NA> A
<NA> B
red C
pink D
<NA> E
black F
blue G
green H
brown I
orange J
purple K
如果此帮助请求格式正确或样式不正确,请提前接受我的道歉。这是我在stackoverflow上的第一篇文章。
有关我可能缺少什么或如何做到这一点的任何建议?
答案 0 :(得分:2)
如果您的变量是因素,请更改字符。
newdata[] <- lapply(newdata, as.character)
newdata[order(newdata$Bar),]
Foo Bar
11 <NA> A
21 <NA> B
8 red C
4 pink D
31 <NA> E
3 black F
1 blue G
5 green H
2 brown I
6 orange J
7 purple K