我有一個小標題,其中每一行對應一個人。每個人有多行,但每一行包含每個人的完全相同的資料,除了最后幾列(下面,“贏”,“輸”)包含 1/0 虛擬變數。虛擬變數的值因行而異。
示例資料框:
df <- data.frame(name = c("Anne", "Anne", "Anne", "Joe", "Joe", "Joe", "Kyle", "Kyle", "Kyle", "Tom", "Tom", "Tom"), age = c("13", "13", "13", "15", "15", "15", "12", "12", "12", "14", "14", "14"), won = c(1,0,0,0,0,1,0,1,0,0,0,0), lost = c(0,1,0,0,1,0,1,0,0,0,1,0))
我想折疊這些行,以便每個人只有一行。在我折疊的資料框中,如果該人在原始資料集中的該列中有任何“1”,我希望該人的“贏”和“輸”(虛擬列)的值為“1”。否則,我希望該值為“0”。
折疊的資料框:
df_collapsed <- data.frame(name = c("Anne", "Joe", "Kyle", "Tom"), age = c("13","15","12","14"), won = c(1,1,1,0), lost = c(1,0,1,1))
如果您有任何想法,請告訴我!我無法手動執行此操作(如示例中所示),因為我的實際資料集要大得多。我一直在思考這個問題,但無法弄清楚如何相應地折疊資料框。
uj5u.com熱心網友回復:
我們可以max在分組后使用
library(dplyr)
df %>%
group_by(name, age) %>%
summarise(across(everything(), max), .groups = 'drop')
或在base R
aggregate(. ~ name age, df, max)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/454405.html
