用R中的条件(4级)输入数据
我的数据中有两个不同的变量。第一个:静脉大小(有NAs)。 第二个变量是:程序位置(c=(1,2,3,4)) 我想根据不同的手术部位对静脉大小输入不同的值。我试过了,但没有成功。e、 g:如果程序位置为1或2,则输入3;如果程序位置为3,则输入4;如果程序地点为4,则输入5。我对该领域不熟悉。非常感谢您的帮助用R中的条件(4级)输入数据,r,conditional-statements,R,Conditional Statements,我的数据中有两个不同的变量。第一个:静脉大小(有NAs)。 第二个变量是:程序位置(c=(1,2,3,4)) 我想根据不同的手术部位对静脉大小输入不同的值。我试过了,但没有成功。e、 g:如果程序位置为1或2,则输入3;如果程序位置为3,则输入4;如果程序地点为4,则输入5。我对该领域不熟悉。非常感谢您的帮助 vein.size<-(3,3,3,NA,NA,NA) procedure.site<-(1,2,2,3,4,4) df<-cbind(vein.size,procedu
vein.size<-(3,3,3,NA,NA,NA)
procedure.site<-(1,2,2,3,4,4)
df<-cbind(vein.size,procedure.site)
vene.size您可以使用ifelse
语句链,或者在dplyr
中使用case\u:
library(dplyr)
df <- df %>%
mutate(output = case_when(is.na(vein.size) & procedure.site %in% 1:2 ~ 3,
is.na(vein.size) & procedure.site == 3 ~ 4,
is.na(vein.size) & procedure.site == 4 ~ 5,
TRUE ~ vein.size))
# vein.size procedure.site output
#1 3 1 3
#2 3 2 3
#3 3 2 3
#4 NA 3 4
#5 NA 4 5
#6 NA 4 5
库(dplyr)
df%
在%1:2~3中,当(是.na(静脉大小)和procedure.site%时,进行变异(输出=案例_),
is.na(静脉大小)和procedure.site==3~4,
is.na(静脉大小)和procedure.site==4~5,
真~静脉。大小)
#静脉.大小程序.现场输出
#1 3 1 3
#2 3 2 3
#3 3 2 3
#4 NA 3 4
#5 NA 4 5
#6 NA 4 5
数据
vein.size<-c(3,3,3,NA,NA,NA)
procedure.site<-c(1,2,2,3,4,4)
df<-data.frame(vein.size,procedure.site)
vene.size您可以使用ifelse
语句链,或者在dplyr
中使用case\u:
library(dplyr)
df <- df %>%
mutate(output = case_when(is.na(vein.size) & procedure.site %in% 1:2 ~ 3,
is.na(vein.size) & procedure.site == 3 ~ 4,
is.na(vein.size) & procedure.site == 4 ~ 5,
TRUE ~ vein.size))
# vein.size procedure.site output
#1 3 1 3
#2 3 2 3
#3 3 2 3
#4 NA 3 4
#5 NA 4 5
#6 NA 4 5
库(dplyr)
df%
在%1:2~3中,当(是.na(静脉大小)和procedure.site%时,进行变异(输出=案例_),
is.na(静脉大小)和procedure.site==3~4,
is.na(静脉大小)和procedure.site==4~5,
真~静脉。大小)
#静脉.大小程序.现场输出
#1 3 1 3
#2 3 2 3
#3 3 2 3
#4 NA 3 4
#5 NA 4 5
#6 NA 4 5
数据
vein.size<-c(3,3,3,NA,NA,NA)
procedure.site<-c(1,2,2,3,4,4)
df<-data.frame(vein.size,procedure.site)
Vene.size您可以使用查找表,然后合并:
# your data
vein.size <- c(3,3,3,NA,NA,NA)
procedure.site <- c(1,2,2,3,4,4)
your_df <- data.frame(vein.size = vein.size,
procedure.site = procedure.site)
# the lookup table
lookup_df <- data.frame(
procedure.site = c(1, 2, 3, 4),
imputation = c(3, 3, 4, 5)
)
# result
merge(your_df, lookup_df, by='procedure.site')
您可以使用查找表,然后合并:
# your data
vein.size <- c(3,3,3,NA,NA,NA)
procedure.site <- c(1,2,2,3,4,4)
your_df <- data.frame(vein.size = vein.size,
procedure.site = procedure.site)
# the lookup table
lookup_df <- data.frame(
procedure.site = c(1, 2, 3, 4),
imputation = c(3, 3, 4, 5)
)
# result
merge(your_df, lookup_df, by='procedure.site')
嗨,罗纳克:谢谢,我认为这两条评论都很有用。但如何仅对缺少的值进行变异或转换。使用这两个代码后,vein.size中的所有数据都发生了变化!感谢您更新答案以更改Vene.size
为NA
的值。你好,罗纳克:谢谢,我认为这两条注释都很有用。但如何仅对缺少的值进行变异或转换。使用这两个代码后,vein.size中的所有数据都发生了变化!感谢您更新答案以更改静脉大小为NA
的值。