如何从具有字符和数字的变量中创建二进制变量



我的数据如下:

ID var1 var2  
1    A    2 
2    5    6
3    B    3
4    7    D
5    1    1
6    2    5
7    6    Y
8    7    G
9    8    C
Var1和var2的

值为1~9,A~Z中的一个。我想要这样的二进制数据集。如果原始值为4-9,则新值= 1,否则新值= 0。
我如何从上面的数据二进制索引?

您可以使用%in%运算符检查列中的每个值是否在目标集中:

as.numeric(dat$var1 %in% 4:9)
# [1] 0 1 0 1 0 0 1 1 1
as.numeric(dat$var2 %in% 4:9)
# [1] 0 1 0 0 0 1 0 0 0

即使你有字符数据,也没有必要使用像grep这样的字符串函数——在R中"4" == 4返回TRUE

我猜你想包括var1和var2。您可以使用返回TRUE或FALSE的grepl。我称这个数据帧为df。|or,因此如果4-9在var1或var2中,则返回TRUE。

df$New <- as.numeric((grepl("[4-9]", df$var1)) | (grepl("[4-9]", df$var2)))

library(stringr)
str_detect(as.character(interaction(dat[,-1])),"[4-9]")+0
#[1] 0 1 0 1 0 1 1 1 1

相关内容

  • 没有找到相关文章

最新更新