如何同时订购两列

How to order two columns simultaneously

提问人:dave 提问时间:4/26/2023 最后编辑:zx8754dave 更新时间:4/26/2023 访问量:56

问:

我希望“YEAR”列按“1970,1971,1972,1973”的顺序排列,而“AMOUNT”列应同时按升序排列。另外,我希望创建额外的行来完成“YEAR”列中的年数。

K <- data.frame("YEAR" = c(1970,1972,1973,1971,1972,1971,1973,1970,1970),
"AMOUNT" = c(100,100,200,100,400,300,700,200,800),
"DISTANCE" = c(12,3,9,12,25,26,10,7,15))

这是我想要的结果:

K <- data.frame("YEAR" = c(1970,1971,1972,1973,1970,1971,1972,1973,1970,1971,1972,1973),
                "AMOUNT" = c(100,100,100,200,200,300,400,700,800,"NA","NA","NA"),
                "DISTANCE" = c(12,3,12,9,7,26,25,10,15,"NA","NA","NA"))
R DataFrame dplyr Tidyverse 数据操作

评论

0赞 zx8754 4/26/2023
问题不清楚。你怎么知道哪个 1970 年属于哪个 4 年组?
0赞 Merijn van Tilborg 4/26/2023
我理解你关于排序的问题,但我不明白为什么你希望 DISTANCE 3 突然属于 1972 年而不是 1971 年。您只想按原样对所有列进行独立排序?

答:

0赞 George Savva 4/26/2023 #1

我不确定您打算如何推广此解决方案,因此这可能并不理想,但它可以满足您的需求。

data.frame( YEAR = rep(sort(unique(K$YEAR)),3),
            AMOUNT = sort(K$AMOUNT)[1:12],
            DISTANCE = K$DISTANCE[1:12])

   YEAR AMOUNT DISTANCE
1  1970    100       12
2  1971    100        3
3  1972    100        9
4  1973    200       12
5  1970    200       25
6  1971    300       26
7  1972    400       10
8  1973    700        7
9  1970    800       15
10 1971     NA       NA
11 1972     NA       NA
12 1973     NA       NA

评论

1赞 zx8754 4/26/2023
无需对最后一列进行排序
0赞 George Savva 4/26/2023
好地方。谢谢。