簡體   English   中英

使用dplyr mutuate(或其他程序包)基於每行中特定值的計數來創建新列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM