[英]How to merge rows based on common columns in R
我在一個看起來像這樣的數據框中工作:
vims <- data.frame(
patient_ID = c("a", "a", "a", "b", "b"),
Date = c(2020, 2020, 2018, 2020, 2028),
Eye = c("Right", "Left", "Right", "Right", "Right"),
V1 = c(21, 18, 30, 30, 18)
V2 = c(28, 30, 15, 45, 60)
)
如您所見,數據有一個 ID,並且可能在不同日期對同一個 ID 進行多次評估,而且在這些日期內可能有不同的眼睛評估。 我正在嘗試合並行,以便按 ID 和日期排列以獲得包含 ID、日期和同一行中每只眼睛的所有信息的行(如果可用,右眼和左眼的 V1)
你在找這個嗎:
library(dplyr)
library(tidyr)
vims %>% pivot_wider(id_cols = c(patient_ID, Date), names_from = Eye, values_from = c(V1,V2))
# A tibble: 4 x 6
patient_ID Date V1_Right V1_Left V2_Right V2_Left
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 a 2020 21 18 28 30
2 a 2018 30 NA 15 NA
3 b 2020 30 NA 45 NA
4 b 2028 18 NA 60 NA
一個data.table
替代方案:
library(data.table)
vims <- as.data.table(vims)
dcast(vims, patient_ID+Date~Eye, value.var = c("V1","V2"))
patient_ID Date V1_Left V1_Right V2_Left V2_Right
1: a 2018 NA 30 NA 15
2: a 2020 18 21 30 28
3: b 2020 NA 30 NA 45
4: b 2028 NA 18 NA 60
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.