簡體   English   中英

根據連續變量值 (dplyr) 改變二進制變量

[英]Mutating a binary variable based on continuous variable values (dplyr)

我有一個 Reddit 用戶和他們的帖子的數據集,我正在嘗試創建一個指示變量,如果用戶有許多帖子在第 80 個百分位,則編碼為 1,否則為 0。 我基本上對將用戶分類為“主動”用戶和“被動”用戶很感興趣。

我創建了一個變量來計算用戶名的帖子數量:

df <-
df %>% group_by(username) %>% mutate(count = n()) 
  #count(username, sort = TRUE)

這是一個數據示例:

df %>% 
  select(username, count) %>% 
  head(., 4)

輸出:

username
cyz
crash
conan
xyz
<chr>
count
14
12
7
13
<int>

我嘗試了以下方法來識別在前 20 個百分位數中有許多帖子的用戶:

df %>% 
  group_by(username) %>% 
    do(tidy(t(quantile(.$count))))

但我不斷收到以下錯誤消息:“請參閱幫助(“已棄用”)警告:'tidy.numeric' 已棄用。”

您可以使用 mutate 來獲取一個新列,其中的活動編碼如您所期望的那樣。

df <- data.frame(username = LETTERS[1:10],
                 count = round(replicate(10, rnorm(1, 50, 5))))
   username count
1         A    47
2         B    48
3         C    57
4         D    55
5         E    50
6         F    57
7         G    54
8         H    54
9         I    53
10        J    43

df %>% mutate(active = ifelse(count > quantile(count, 0.8), 1, 0))
1         A    47      0
2         B    48      0
3         C    57      1
4         D    55      0
5         E    50      0
6         F    57      1
7         G    54      0
8         H    54      0
9         I    53      0
10        J    43      0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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