![](/img/trans.png)
[英]mutate_each in dplyr: create new column with the mean row values of other columns with some text in common
[英]Using dplyr mutuate (or other package) to create new column based on count of specific values in each row
我有一個包含幾種形式的數據的數據框,例如:
<dbl> <chr> <dttm> <chr> <chr>
0001 cccc Feb-01-18 bbbb 1ab76
0002 bbbb Apr-02-20 cccc 7we54
...
我想做的是創建一個新列“ f”,該列返回每行中特定字符值(例如“ cccc”或“ bbbb”)的數量的計數。 我已經嘗試過使用dplyr合並功能和rowSums的組合,但是盡管嘗試了幾種變體,但還是沒有運氣。
df %>% mutate(new = rowSums(. == "cccc"))
任何指導將不勝感激。 謝謝!
一種選擇是指定|
library(dplyr)
df %>%
mutate(f = rowSums(. == "cccc"| .== "bbbb"))
另外,可以通過僅檢查character
類的列來使其更加具體
df %>%
select_if(is.character) %>%
transmute(f = rowSums(. == "cccc" | . == "bbbb"))%>%
bind_cols(df, .)
Base R解決方案:
df <- data.frame(a = c("c","b"), d = c("c", "c"), e = c(1,2), stringsAsFactors = F)
pattern <- "c"
df["count"] <- rowSums(apply(df, 2, function(x, s = pattern) x %in% s))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.