我有一个包含不同列的数据框df。
在df$xyz
列中,我大约有20个字符变量。
我想保留3个变量("HL%", "HH$", "LL$")
,所有其他变量("truncated", "kk$", "hhb"...)
应替换为"other"
。
那是我的数据框:
xz xyz
2.5 HL%
4.4 HH$
9.3 kk$
2.4 kk$
4.5 LL$
5.6 truncated
我需要:
xz xyz
2.5 HL%
4.4 HH$
9.3 other
2.4 other
4.5 LL$
5.6 other
我尝试过:
df$xyz[df$xyz!="HL%"|
df$xyz!="HH$"|
df$xyz!="LL$"] <- "other"
这似乎并不能解决问题。
答案 0 :(得分:0)
正如@nya在评论中所述,您的df$xyz
可能是一个因素变量,请与str(df)
进行核对。
str(df)
# 'data.frame': 6 obs. of 2 variables:
# $ xz : num 2.5 4.4 9.3 2.4 4.5 5.6
# $ xyz: Factor w/ 6 levels "HH$","HL%","kk$",..: 2 1 6 6 4 6
在这种情况下,请首先使用您引入的新级别"other"
更新因子级别。否则,请跳过此步骤。
levels(df$xyz) <- c(levels(df$xyz), "other")
那之后就做。
df$xyz[-which(df$xyz %in% c("HL%", "HH$", "LL$"))] <- "other"
您的方法也可以使用,但是您需要将|
替换为&
。