R-在rbind之后对数据帧进行排序,并使NA保持有序
我有两个数据帧。每个都有两列。第一个df没有NA值,第二个df在其第一列中有NA值。例如:R-在rbind之后对数据帧进行排序,并使NA保持有序,r,sorting,rbind,R,Sorting,Rbind,我有两个数据帧。每个都有两列。第一个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加入他们,如下所示: > newd
> 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
>新数据新数据
富吧
蓝色1克
2布朗一世
3黑F
4粉红色D
5绿色H
6橙色J
7紫色K
8红色C
9 A
10 B
11 E
现在我使用第二列上的order对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
>newSorted newSorted
富吧
8红色C
4粉红色D
3黑F
蓝色1克
5绿色H
2布朗一世
6橙色J
7紫色K
9 A
10 B
11 E
它所做的似乎是对第二列上的每个原始df进行排序,并对新df进行分段。这不是我想要实现的。我知道order接受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
Foo-Bar
A.
B
红色C
粉红D
E
黑F
蓝色G
绿色H
布朗一世
橙色J
紫色K
如果此帮助请求的格式或样式不正确,请提前接受我的道歉。这是我关于stackoverflow的第一篇文章
关于我可能缺少什么或如何做的任何建议?如果变量是因子,请更改ito字符
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
newdata[]检查您的列是否为因子。使用字符列,我得到了预期的结果。有了因子变量,我就能重现你得到的结果。因此,将其更改为字符变量。在创建数据帧时使用stringsAsFactors=FALSE
,并确保条形列是字符而不是因子。NAs影响级别的顺序,为什么不仅仅是newdata[order(as.character(newdata$Bar)),]
?把一切都变成性格是一种浪费。通过这种方式,Huddo
可以将变量作为因子保留。非常感谢您的帮助。那很好用。