问题描述
我有一个数据框,其中有三个可能的值, Up, Down或NA。
dim(df)= 61,5
我要用+2替换所有上值
所有要用-2替换下值>
所有NA值都为0
我创建了以下函数,但我不断遇到此错误:
Binaryexpress<-function(x){
for(i in 1:5){
j< -1
while(j< = 61){
if(x [j,i] == Down){
x [j,i]<--2
j< ;-j + 1
}否则if(x [j,i] == Up){
x [j,i]<-2
j<- j + 1
}否则if(is.na(x [j,i])== TRUE){
x [j,i]<-0
j< -j + 1
}
i<-i + 1
}
}
}
if( x [j,i] == Down){:缺少值,其中TRUE / FALSE需要
我在论坛上也尝试了其他方法,例如-> df [df == NA]<-0,但这也没有用。
编辑::
数据帧看起来像这样:
x1 x2 x3 x4 x5
y向上向下不适用NA向上
k向下向上不适用NA
l。 。 。 。 。
m。 。 。 。 。
。
。
谢谢大家,
您不需要任何这些。
db [db == Up ]--2
db [db == Down]<---2
db [is.na(db)]<-0
基本上,您正在数据库(我称为db)中搜索 Up, Down或NA,然后分配2,分别为-2和0。
这会留下所有字符,所以您可以这样做:
db< -as.data.frame(sapply(db,as.numeric))
在您的评论中,您说它给了您一个因数错误-这意味着您的df就是所有因数。首先解决这个问题:
db< -as.data.frame(sapply(db,as.character), stringsAsFactors = F)
I have a a dataframe, which has three possible values, "Up", "Down" or NA.
dim(df) = 61,5
I want to replace all "Up" values by +2
All "Down" values by -2
All NA values by 0
I have created the following function but I keep on getting this error:
Binaryexpress <- function(x){
for(i in 1:5){
j<-1
while(j<= 61){
if (x[j,i] == "Down"){
x[j,i] <- -2
j <- j+1
} else if(x[j,i] == "Up"){
x[j,i] <- 2
j<- j+1
}else if(is.na(x[j,i]) == TRUE){
x[j,i] <- 0
j<- j+1
}
i<- i+1
}
}
}
Error in if (x[j, i] == "Down") { : missing value where TRUE/FALSE needed
I have tried other methods also on the forum, such as -> df[df == NA] <- 0 , but this has not worked either.
EDIT::
Dataframe looks like this:
x1 x2 x3 x4 x5
y Up Down NA NA Up
k Down NA Up NA NA
l . . . . .
m . . . . .
.
.
Thank you all in advance,
You don't need any of that.
db[db=="Up"] <- 2
db[db=="Down"] <- -2
db[is.na(db)] <- 0
Basically, you're searching your database (which I called db) for "Up", "Down", or NAs, and assigning 2, -2, and 0 respectively.
This leaves you with all characters, so you do this:
db<-as.data.frame(sapply(db,as.numeric))
In your comment you said it gives you a factor error - that means your df is all factors. Fix that by starting out with this:
db<-as.data.frame(sapply(db,as.character),stringsAsFactors = F)
这篇关于用数字替换值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!