用R中的条件(4级)输入数据

用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

我的数据中有两个不同的变量。第一个:静脉大小(有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,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
的值。