我有一個簡單的問題有關R.在基於R中匹配條件
聚集值的行組合值假設我有一個數據幀:
DF <- data.frame(col1=c("Type 1", "Type 1B", "Type 2"), col2=c(1, 2, 3))
看起來像這樣:
col1 col2
1 Type 1 1
2 Type 1B 2
3 Type 2 3
我注意到我在數據中有Type 1
和Type 1B
,所以我想將Type 1B
合併成Type 1
。
所以我決定使用dplyr
:
filter(DF, col1=='Type 1' | col1=='Type 1B') %>%
summarise(n = sum(col2))
但現在我需要保持它去:
DF2 <- data.frame('Type 1', filter(DF, col1=='Type 1' | col1=='Type 1B') %>%
summarise(n = sum(col2)))
我想我要cbind
這個新DF2回到原來的DF,但這意味着我必須將列名設置爲一致:
names(DF2) <- c('col1', 'col2')
確定,現在我可以解決:
rbind(DF2, DF[3,])
結果呢?它的工作....
col1 col2
1 Type 1 3
3 Type 2 3
......但唉!太可怕了!必須有更好的方法來簡單地組合值。
有一定是做這麼簡單的東西更概括的方式,不是嗎?當然,這樣一個簡單的操作不應該包括正則表達式匹配! –
現在在一行中。但是你需要'gsub'或者找到另一種模式來識別'type 1'和'type1B'類似。彙總可以用'aggregate','dplyr','data.table'等完成。 –