感謝迄今的迴應。在數據幀中打破關係(dplyr,data.table,base r)
我已經在我的問題上花了幾個小時,並認爲最好重新構建我的問題。我不再認爲dplyr會起作用。這是我的問題。
約束:需要以編程方式訪問列名(使用dplyr會產生問題)。
首選,但不是必需的:解決方案沒有數據框的副本。
代碼設置:
set.seed(11)
N <- 12
A <- sample(LETTERS, N, replace=FALSE)
B <- c(rep(c("AA"), 4), rep(c("BA"), 4),rep(c("CA"), 4))
C <- sample(4:10, N, replace=TRUE)
df <- as.data.frame(cbind(A,B,C))
dt <- as.data.table(df)
rank_tb <- dt[order(B,C,A)]
輸出:
A B C
1: E AA 4
2: M AA 5
3: B AA 6
4: O AA 7
5: I BA 5
6: D BA 6
7: P BA 7
8: U BA 9
9: Q CA 5
10: V CA 5
11: J CA 8
12: X CA 9
rank_tb讓我走了一半,註上 「B」 列分組被保留,然後數據幀進行排序的列 「C」最後關係被列A打破 - >見第9行和第10行。我最後想要的是以下內容:
A B C rank
1: E AA 4 1
2: M AA 5 2
3: B AA 6 3
4: O AA 7 4
5: I BA 5 1
6: D BA 6 2
7: P BA 7 3
8: U BA 9 4
9: Q CA 5 1
10: V CA 5 2
11: J CA 8 3
12: X CA 9 4
,它是按「B」列分組的「C」分類列。
下面是我原來的問題的文本,再次感謝您的時間..
是否有使用第二柱脫離任何的像dplyr包ROW_NUMBER排序函數關係的方法?目前我有:
dat <- data %>%
filter(!is.na(col1)) %>%
group_by(col2) %>%
filter(row_number(col1) == 1)
目前我不確定如何ROW_NUMBER打破了COL1的關係,並希望指定單獨的山坳用來打破的關係:
dat <- data %>%
filter(!is.na(col1)) %>%
group_by(col2) %>%
filter(row_number(col1, col3) == 1)
感謝adavance
你看過'?row_number'幫助頁嗎?這個函數只需要一個參數,所以如果你想改變行的順序,你可能會首先「排列()」(排序)你的組。 – MrFlick
你只想要每組的第一行? –
請考慮提供一個可重現的示例,其中包含幾行數據集。 – akrun