我正在使用 ACS 資料嘗試從兩個不同的變數 OCPIP 和 GRPIP 創建一個住房成本負擔變數。
我想將那些報告 0 的值設定為缺失,將任何大于 30 的值設定為“是”,將 1-30 的任何值設定為“否”。這是我的dplyr/Tidyverse代碼:
df <- df %>%
mutate(cost_burdened = if_else(OCPIP == 0 | GRPIP == 0, NA_character_,
if_else(OCPIP < 31 | GRPIP < 31, "No", "Yes")))
我覺得我已經按照我閱讀它的方式設定了它,如果 X 或 Y = 0,則它們丟失,如果 X 或 Y 大于 31,則它們是“是”。如果我使用if_else其中一個的確切設定創建了兩個單獨的變數(因此只有 GRPIP 或 OCPIP),則代碼有效。
但是當我添加|它時它不起作用。它將所有內容都設定為缺失。當我嘗試了不同的配置時,包括case_when它仍然無法正常作業。
uj5u.com熱心網友回復:
我不知道是什么導致了你的問題。請參閱下面的示例。這里一切都很好。
library(tidyverse)
set.seed(1111)
n=500
df = tibble(
OCPIP = sample(0:40, n, replace = TRUE),
GRPIP = sample(0:40, n, replace = TRUE),
) %>% mutate(cost_burdened = if_else(OCPIP == 0 | GRPIP == 0, NA_character_,
if_else(OCPIP < 31 | GRPIP < 31, "No", "Yes")))
輸出
# A tibble: 500 x 3
OCPIP GRPIP cost_burdened
<int> <int> <chr>
1 25 27 No
2 35 3 No
3 5 18 No
4 37 32 Yes
5 25 39 No
6 30 11 No
7 38 27 No
8 0 1 NA
9 12 19 No
10 23 16 No
# ... with 490 more rows
uj5u.com熱心網友回復:
這是一個case_when()實作:
library(tidyverse)
set.set(191)
cost_burdened <- tibble(
OCPIP = c(0, 12, 31, 35, 47),
GRPIP = c(31, 32, 15, 0, 47)
)
cost_burdened %>%
mutate(cost_burdened = case_when(
(OCPIP == 0) | (GRPIP == 0) ~ NA_character_,
(OCPIP < 31) | (GRPIP < 31) ~ "No",
TRUE ~ "Yes")
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/316363.html
下一篇:將n個單獨的物件保存到一個類中
