我有数据框,只想将几列中的值从字符串更改为整数。
我怎样才能在R中找到这个?
假设这是我的数据:
data.frame(
X = sample(1:10),
Y = sample(c("yes", "no"), 10, replace = TRUE),
Z = sample(c("yes", "no"), 10, replace = TRUE),
ZZ = sample(c("yes", "no"), 10, replace = TRUE))
我想改变:
使用给定函数f [ex。]更改列Y.函数f将“是”更改为2,将“否”更改为第二列中的1]
此类功能的示例
f <- function (x) {
if(x == "yes") {
return 2;
}
else {
return 11;
}
}
用给定的函数g [ex。]改变列ZZ。函数g将“是”更改为3,将“否”更改为第四列中的4]
答案 0 :(得分:3)
此处解决方案使用函数ifelse()
。
df<-data.frame(
X = sample(1:10),
Y = sample(c("yes", "no"), 10, replace = TRUE),
Z = sample(c("yes", "no"), 10, replace = TRUE),
ZZ = sample(c("yes", "no"), 10, replace = TRUE))
df$Y=as.integer(ifelse(df$Y=="yes",2,1))
df$ZZ=as.integer(ifelse(df$ZZ=="yes",3,4))
str(df)
'data.frame': 10 obs. of 4 variables:
$ X : int 9 4 8 5 1 7 2 10 6 3
$ Y : int 2 2 1 1 2 1 2 1 1 1
$ Z : Factor w/ 2 levels "no","yes": 2 1 2 2 1 2 2 1 1 1
$ ZZ: int 3 3 4 3 3 3 3 4 4 3
为同一任务创建函数f
和g
f<-function(x){
as.integer(ifelse(x=="yes",2,1))
}
g<-function(x){
as.integer(ifelse(x=="yes",3,4))
}
df$Y=f(df$Y)
df$ZZ=g(df$ZZ)