R如何有选择地对数据框进行排序?

bro*_*oli 3 sorting r dataframe

我在R中有以下示例数据框.

  item index  ptr
     A     1 0.40
     B     2   NA
     C     3 0.30
     D     4 0.35
     E     5 0.44
     F     6   NA
Run Code Online (Sandbox Code Playgroud)

它已根据column =排序index.现在,我想按列对其进行排序,ptr但是将行的位置保留为ptr= NA完整.所以我期望的输出是:

  item index  ptr
     C     3 0.30
     B     2   NA
     D     4 0.35
     A     1 0.40
     E     5 0.44
     F     6   NA
Run Code Online (Sandbox Code Playgroud)

常规df = df[order(ptr),]不起作用.有任何想法吗?非常感谢提前.

koh*_*ske 9

试试这个:

> df
  item index  ptr
1    A     1 0.40
2    B     2   NA
3    C     3 0.30
4    D     4 0.35
5    E     5 0.44
6    F     6   NA
> df[!is.na(df$ptr), ] <- df[order(df$ptr, na.last = NA), ]
> df
  item index  ptr
1    C     3 0.30
2    B     2   NA
3    D     4 0.35
4    A     1 0.40
5    E     5 0.44
6    F     6   NA
Run Code Online (Sandbox Code Playgroud)