如何在R数据帧中实现函数调用
我有一个员工详细信息的数据集。我想将“未提供”值替换为0,然后将数据类型转换为数字 我试着做一个循环。但这是一个错误的回答如何在R数据帧中实现函数调用,r,R,我有一个员工详细信息的数据集。我想将“未提供”值替换为0,然后将数据类型转换为数字 我试着做一个循环。但这是一个错误的回答 NPFunction<-function(salcol){ df<-salcol i=0 n=nrow(salcol) for(i in n){ if(df=='Not Provided') df[i]=0.0 }} sal$BasePay=NPFunction(sal$BasePay) sal$BasePay=as.numeric(s
NPFunction<-function(salcol){
df<-salcol
i=0
n=nrow(salcol)
for(i in n){
if(df=='Not Provided')
df[i]=0.0
}}
sal$BasePay=NPFunction(sal$BasePay)
sal$BasePay=as.numeric(sal$BasePay)
dataset is as below:
Id EmployeeName BasePay
1 Carolyn A Wilson 100000
2 Not provided Not Provided
3 Joann Anderson 50000
expected result is :
Id EmployeeName BasePay
1 Carolyn A Wilson 100000
2 Not provided 0.0
3 Joann Anderson 50000
In the actual result BasePay column is getting dropped and result is:
Id EmployeeName
1 Carolyn A Wilson
2 Not provided
3 Joann Anderson
NPFunction我们不需要在行上循环。在更改为numeric
列后,只需对进行赋值即可。请注意,如果as.character
已经是character
类,则不需要as.character
(这里,我们假设它可以是因子
列)
或者如果我们需要一个紧凑的选择
sal$BasePay <- as.numeric(replace(sal$BasePay, sal$BasePay == "Not Provided", 0))
sal$BasePay你不需要一个循环。您可以使用ifelse
sal$BasePay <- with(sal, ifelse(BasePay == "Not Provided", 0, as.numeric(BasePay))
或者,您可以执行以下操作:
sal %>% mutate(BasePay = as.numeric(if_else(BasePay=="Not provided","0",BasePay)))
“未提供”是给定的字符值,而不是NA。我想把这个词换成0@Priya前面的代码可以工作,但是可以看到更新的简化代码。如果存在多个验证,此代码将如何工作。例如,如果BasePay==“未提供”或BasePay为NA,则BasePay应设置为0。我使用了下面的代码,但它不起作用:sal$BasePay@Priya这正是我得到原始答案的原因。我已将其重新添加到我的答案中。试试看,让我知道。sal$BasePay“未提供”是给定的字符值,而不是NA。我想把这个词换成0@Priya我明白。当您将设置为.numeric
时,它会自动转换为NA
。e、 g.as.numeric(c(1,2,3,“未提供”)
sal$BasePay <- with(sal, ifelse(BasePay == "Not Provided", 0, as.numeric(BasePay))
sal$BasePay <- with(sal, ifelse(is.na(as.numeric(as.character(BasePay))),
0, as.numeric(BasePay))
sal %>% mutate(BasePay = as.numeric(if_else(BasePay=="Not provided","0",BasePay)))