[英]logical to factors (or strings) in data.frame
如何在data.frame中重新編碼邏輯到因子(或字符串)?
data <- data.frame(year = c(2015, 2015, 2016, 2016),
column2 = c(4, NA, 9, 1))
library (dplyr)
missing_data <- data %>%
count(year, complete.cases(column2))
names(missing_data)[2] = "col2"
我的結果:
year col2 n
(dbl) (lgl) (int)
2015 FALSE 1
2015 TRUE 1
2016 TRUE 2
我想要的是:
year col2 n
(dbl) (int)
2015 unknown 1
2015 known 1
2016 known 2
我嘗試了什么(在dplyr鏈中):
mutate(col2 = as.factor(col2))
這個人應該這樣做。
missing_data$col2 <- factor(missing_data$col2, labels=c("unknown", "known"))
除了richard lindgren所示的顯而易見的方法之外 ,您還可以在dplyr鏈中執行此操作 。 您可以從邏輯[col2 + 1]
創建數字索引,並使用它來分配級別c('unknown','known')
:
dat %>%
count(year, col2 = complete.cases(column2)) %>%
mutate(col2 = c('unknown','known')[col2 + 1])
或者與ifelse
:
dat %>%
count(year, col2 = complete.cases(column2)) %>%
mutate(col2 = ifelse(col2,'known','unknown'))
兩者都給:
year col2 n
(dbl) (chr) (int)
1 2015 unknown 1
2 2015 known 1
3 2016 known 2
如果你想要一個因子作為結果,你可以將它包裝在factor
: factor(c('unknown','known')[col2 + 1])
或factor(ifelse(col2,'known','unknown'))
。
如果要合並的方法,如通過在dplyrα鏈理查德·林格倫 ,你將不得不ungroup
第一:
dat %>%
count(year, col2 = complete.cases(column2)) %>%
ungroup() %>%
mutate(col2 = factor(col2, labels = c('unknown','known')))
這也會給你帶來理想的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.