[英]Combining two variables to create new variable
我想將兩個只有一個答案的變量組合成一個有兩個答案的變量。
例子
IPV_YES 僅具有 1 的答案 IPV_NO 僅具有 2 的答案
我想將它們組合成一個名為 IPV 的變量,該變量將具有來自兩個單獨類別的 1 和 2 結果。
我試過使用 ifelse 命令,但它只顯示了 IPV_YES 的值。
我擁有的數據集
我想要的結果
我們可以在將''
轉換為NA
后使用coalesce
library(dplyr)
df <- df %>%
transmute(ID, IPV = coalesce(na_if(IPV_YES, ""), na_if(IPV_NO, ""))) %>%
type.convert(as.is = TRUE)
df <- data.frame(ID = 1:4, IPV_YES = c(1,"",1,""), IPV_NO = c("",2,"",2))
我的答案
df %>% mutate(across(everything(), ~ifelse(. == "", NA, as.numeric(.)))) %>%
group_by(ID) %>%
rowwise() %>%
transmute(IPV = sum(c_across(everything()), na.rm = T))
# A tibble: 4 x 2
# Rowwise: ID
ID IPV
<dbl> <dbl>
1 1 1
2 2 2
3 3 1
4 4 2
數據
df <- data.frame(ID = 1:4, IPV_YES = c(1,"",1,""), IPV_NO = c("",2,"",2))
df$IPV <- ifelse(df$IPV_YES != "", df$IPV_YES, df$IPV_NO[!df$IPV_NO==""])
在這里,我們指定一個ifelse
語句; 可以這樣解釋:如果df$IPV_YES
中的值不為空,則給出df$IPV_YES
中的值,否則給出df$IPV_NO
中不為空的值。
如果要刪除IPV_*
列:
df[,2:3] <- NULL
結果:
df
ID IPV
1 1 1
2 2 2
3 3 1
4 4 2
數據:
df <- data.frame(ID = 1:4, IPV_YES = c(1,"",1,""), IPV_NO = c("",2,"",2))
也許你可以試試下面的代碼
replace(df, df == "", NA) %>%
mutate(IPV = coalesce(IPV_YES, IPV_NO)) %>%
select(ID, IPV) %>%
type.convert(as.is = TRUE)
這使
ID IPV
1 1 1
2 2 2
3 3 1
4 4 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.