[英]R: how to do recode for multiple variables at a time
我試圖不糾纏於循環和復雜的代碼中,這些代碼比簡單地重復代碼行需要更長的時間才能正確完成。
我想對 R 中的多個變量進行以下重新編碼。 我連接了變量,但它們並沒有改變原始數據文件的內容。
recode(d$var1,"1=50; 2=70; 3=100; 4=140; 5=190")
重復d$var2
到d$var20
....
如果更好地利用編碼時間復制代碼 20 次,請告訴我!
非常感謝。
讓
d = data.frame(var1 = c(1, 2, 3, 4, 5),
var2 = c(1, 2, 3, 4, 5),
var3 = c(1, 2, 3, 4, 5))
然后通過一個簡單的apply
我們得到
A = apply(d,
2,
function(x) dplyr::recode(x, "1" = "50", "2" = "70",
"3" = "100" , "4" = "140",
"5" = "190")) %>%
as.data.frame(stringsAsFactors = FALSE)
output
> A
var1 var2 var3
1 50 50 50
2 70 70 70
3 100 100 100
4 140 140 140
5 190 190 190
如果所有變量都在同一個 dataframe 中,則可以使用var1:var999
編輯var1:var3
以重新編碼所有變量。
使用dplyr
:
A <- d %>%
mutate_at(vars(var1:var3), .funs = list(
~case_when(
. == 1 ~ 50,
. == 2 ~ 70,
. == 3 ~ 100,
. == 4 ~ 140,
. == 5 ~ 190
)
))
如果您在多個數據幀或列表中有var1:var3
,您可以創建一個 function,例如:
recode_func <- function(x) {
df <- df %>%
mutate_at(vars(x), .funs = list(
~case_when(
. == 1 ~ 50,
. == 2 ~ 70,
. == 3 ~ 100,
. == 4 ~ 140,
. == 5 ~ 190
)
))
}
然后調用 function 到 dataframe 或列表。
給我們:
var1 var2 var3
1 50 50 50
2 70 70 70
3 100 100 100
4 140 140 140
5 190 190 190
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.