我有以下tbl_df;總計2行不同變量dplyr
V1 V2
abc 39
12bc 15
87gd 3
987 50
正巧變量abc
和可變12bc
意味着同樣的事情。我想運行一個dplyr腳本來添加V2
上的值來合併兩行,隱藏或刪除以前的行並創建一個新行。 tbl_df最終將如下所示:
V1 V2
abc 54 => where abc is the sum of previous abc and 12bc
87gd 3
987 50
預先感謝您!
我有以下tbl_df;總計2行不同變量dplyr
V1 V2
abc 39
12bc 15
87gd 3
987 50
正巧變量abc
和可變12bc
意味着同樣的事情。我想運行一個dplyr腳本來添加V2
上的值來合併兩行,隱藏或刪除以前的行並創建一個新行。 tbl_df最終將如下所示:
V1 V2
abc 54 => where abc is the sum of previous abc and 12bc
87gd 3
987 50
預先感謝您!
如果你不想使用plyr,這可能工作!
new_df <- old_df %>%
mutate(V1 = ifelse(V1 == "12bc", "abc", V1) %>%
group_by(V1) %>%
summarise(V2 = sum(v2))
這正是我需要的。非常感謝你!!! – Gilbert
分兩步進行:首先用新值替換「舊」V1值,然後按V1進行分組並彙總。
plyr
包中有一個revalue
函數可用於替換值。首先創建一個矢量與所有你想要的替代品(如果它的只有6家,如您在您的評論指定,這不應該是一個問題)
replacements <- c("12bc" = "abc") # put other pairs in, separated by commas
然後,您可以在相同的步驟升值和組總結之前:
newdata <- mydata %>%
group_by(V1 = plyr::revalue(V1, replacements)) %>%
summarize(V2 = sum(V2))
請注意,這假定您沒有任何列,除了V1和V2。如果你這樣做,你需要指定他們如何得到總結(如果它們在舊版本和新版本之間有所不同,怎麼辦?)
如何知道'abc'和'12bc'是指同一件事物 - 是它*只是*你想合併的那兩個,還是合併一組更大的值對(或組) ? –
abc在舊版本中具有含義,在新版本中將其改爲12bc。 – Gilbert
你有這種匹配查找表嗎?或者它只有1例abc到12bc? – zx8754