Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R数据帧中实现函数调用_R - Fatal编程技术网

如何在R数据帧中实现函数调用

如何在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

我有一个员工详细信息的数据集。我想将“未提供”值替换为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(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)))