[英]Create and assign multiple new dataframe columns in ifelse statement?
所以我有一個數據框my_df
如下
my_df <- data.frame(c("0600", "0602", "0603"))
現在,我需要編寫ifelse
語句,該語句可以計算另外3個變量並將其附加到新的數據框中。
我不知道如何在循環中添加多個可執行語句並將計算出的變量附加到新的數據框中。
以下是我的ifelse
語句代碼。
with(my_df, ifelse(my_df$H == "0600",{d$D <- 1+1 & d$c <- "0600"},
ifelse(my_df$H == "0602",{d$D <- 2+1 & d$c <- "0602"},
{ d$D <- 3+1 & d$c <- "0603"}
)))
我能夠在ifloop
內僅使用一個可執行代碼將值追加到新數據幀,即,如果我只有{d$D <- 1+1}
它可以正常工作,但是當我要執行多個語句時失敗。
我的輸出數據框應如下所示,
D C
2 0600
3 0602
4 0603
ifelse
語法已關閉,但我建議從dplyr
庫中使用case_when
:
library(dplyr)
d$D <- case_when(
my_df$H == "0600" ~ 1+1,
my_df$H == "0602" ~ 2+1,
TRUE ~ 3+1
)
d$c <- case_when(
my_df$H == "0600" ~ "0600",
my_df$H == "0602" ~ "0602",
TRUE ~ "0603"
)
您也可以使用ifelse
,但是您需要嵌套調用ifelse
,它看起來可能不太好,或者很難維護。
使用Base R
my_df <- data.frame("C" = c("0600", "0602", "0603"))
my_df$D <- ifelse(my_df$C=="0600",2,ifelse(my_df$C=="0602",3,ifelse(my_df$C=="0603",4,NA)))
使用清單:
# My data frame
my_df <- data.frame(H = c("0600", "0602", "0603"))
# My list to be used as a lookup
my_list <- list("0600" = c(D = 2, C = "0600"),
"0602" = c(D = 3, C = "0602"),
"0604" = c(D = 4, C = "0603"))
# Find corresponding values for 'H'
# Then bind into a data frame
do.call(bind_rows, my_list[my_df$H])
結果:
# A tibble: 3 x 2
# D C
# <chr> <chr>
# 1 2 0600
# 2 3 0602
# 3 4 0603
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.