簡體   English   中英

R Data.Table 重新編碼許多列

[英]R Data.Table Recode Many Columns

DATA=data.table(X1=c("Yes", "Maybe", "No", "Yes"), X7a=c("Yes", "Maybe", "No", "Yes"),
X1_A = c("Yes", NA, "No", "Yes"),
X1_B = c(1,NA,0,1))
FIX=c('X1','X7')

我有 'DATA',其中包含約 100 列,例如 'X1' 和 'X7a' 我首先希望創建一個向量來存儲我希望重新編碼的列,例如 FIX=c('X1','X7')。 然后我希望使用 data.table 使用以下規則重新編碼“FIX”中的列:

例如,對於 X1_A,將 X1 保留原樣,但將“Maybe”替換為 NA。

對於 X1_B,例如重新編碼 X1,所以 Yes = 1,No = 0,Maybe 是 NA

這個怎么樣? 感覺應該有更好的方法將它加入到規則表中,但是如果不進行 100 次連接或為 100 個變量的每個可能排列設置一個表,我就不太明白如何做到這一點。

DATA=data.table(X1=c("Yes", "Maybe", "No", "Yes"), X7=c("Yes", "Maybe", "No", "Yes"))
FIX = c("X1", "X7") #or names(DATA)

style_A_function = function(x) fifelse(x == "Maybe", NA_character_, x)
style_B_function = function(x) fifelse(x == "Yes", 1, fifelse(x == "No", 0, fifelse(x == "Maybe", NA_integer_, 99)))

DATA[, paste0(FIX, c('_A')) := style_A_function(get(FIX))]
DATA[, paste0(FIX, c('_B')) := style_B_function(get(FIX))]

暫無
暫無

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

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