Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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中因子类型数据中的NA_R - Fatal编程技术网

替换R中因子类型数据中的NA

替换R中因子类型数据中的NA,r,R,数据帧X看起来像这样 State code New Jersey 1 New York 2 Califronia NA 所有列都是系数。我希望用文本或0替换NAis。这样我以后可以转置它们 当我尝试运行此命令时 X[is.na(X)] <- "0" X[is.na(X)]简单地说: X$code <- as.character(X$code) #as.numeric works just as good X[is.na(X)] <- "0" X$code

数据帧X看起来像这样

State      code
New Jersey  1
New York    2
Califronia  NA
所有列都是系数。我希望用文本或0替换
NA
is。这样我以后可以转置它们

当我尝试运行此命令时

X[is.na(X)] <- "0"
X[is.na(X)]简单地说:

X$code <- as.character(X$code) #as.numeric works just as good
X[is.na(X)] <- "0"
X$code <- as.factor(as.numeric(X$code))
X$code简单地说:

X$code <- as.character(X$code) #as.numeric works just as good
X[is.na(X)] <- "0"
X$code <- as.factor(as.numeric(X$code))

X$code如果您不介意来回转换,您编写的代码将适用于矩阵

> X
       State code code2
1  NewJersey    1    NA
2    NewYork    2     0
3 Califronia   NA     4

> X<-as.matrix(X)
> X[is.na(X)] <- "0"
> X<-as.data.frame(X)
> X
       State code code2
1  NewJersey    1     0
2    NewYork    2     0
3 Califronia    0     4

> str(X)
'data.frame':   3 obs. of  3 variables:
 $ State: Factor w/ 3 levels "Califronia","NewJersey",..: 2 3 1
 $ code : Factor w/ 3 levels " 1"," 2","0": 1 2 3
 $ code2: Factor w/ 3 levels " 0"," 4","0": 3 1 2
>X
州代码2
1新泽西州1北美
2纽约2 0
加利福尼亚州
>X X[is.na(X)]X X
州代码2
1新泽西州10
2纽约2 0
3加州0 4
>str(X)
“data.frame”:3个obs。共有3个变量:
$State:系数w/3级“加利福尼亚州”、“新泽西州”…:2 3 1
$代码:系数w/3级“1”、“2”、“0”:1 2 3
$code2:系数w/3级“0”、“4”、“0”:3 1 2

如果您不介意来回转换,您编写的代码将适用于矩阵

> X
       State code code2
1  NewJersey    1    NA
2    NewYork    2     0
3 Califronia   NA     4

> X<-as.matrix(X)
> X[is.na(X)] <- "0"
> X<-as.data.frame(X)
> X
       State code code2
1  NewJersey    1     0
2    NewYork    2     0
3 Califronia    0     4

> str(X)
'data.frame':   3 obs. of  3 variables:
 $ State: Factor w/ 3 levels "Califronia","NewJersey",..: 2 3 1
 $ code : Factor w/ 3 levels " 1"," 2","0": 1 2 3
 $ code2: Factor w/ 3 levels " 0"," 4","0": 3 1 2
>X
州代码2
1新泽西州1北美
2纽约2 0
加利福尼亚州
>X X[is.na(X)]X X
州代码2
1新泽西州10
2纽约2 0
3加州0 4
>str(X)
“data.frame”:3个obs。共有3个变量:
$State:系数w/3级“加利福尼亚州”、“新泽西州”…:2 3 1
$代码:系数w/3级“1”、“2”、“0”:1 2 3
$code2:系数w/3级“0”、“4”、“0”:3 1 2

另一种使用内置
因子的替代方案:

df <- data.frame(a=letters[1:3], b=c("d", "e", NA))
df
  a    b
1 a    d
2 b    e
3 c <NA>
df$b <- factor(df$b, exclude = NULL, 
               levels = c("d", "e", NA), 
               labels = c("d", "e", "f"))
df
  a b
1 a d
2 b e
3 c f
对于许多因素,以下因素可能有用:

df[] <- lapply(df, function(x){
  # check if you have a factor first:
  if(!is.factor(x)) return(x)
  # otherwise include NAs into factor levels and change factor levels:
  x <- factor(x, exclude=NULL)
  levels(x)[is.na(levels(x))] <- "0"
  return(x)
  })

df[]另一种使用内置
因子的替代方案:

df <- data.frame(a=letters[1:3], b=c("d", "e", NA))
df
  a    b
1 a    d
2 b    e
3 c <NA>
df$b <- factor(df$b, exclude = NULL, 
               levels = c("d", "e", NA), 
               labels = c("d", "e", "f"))
df
  a b
1 a d
2 b e
3 c f
对于许多因素,以下因素可能有用:

df[] <- lapply(df, function(x){
  # check if you have a factor first:
  if(!is.factor(x)) return(x)
  # otherwise include NAs into factor levels and change factor levels:
  x <- factor(x, exclude=NULL)
  levels(x)[is.na(levels(x))] <- "0"
  return(x)
  })

df[]让我们创建一个具有因子级别的随机df

df <- data.frame(a=sample(0:10, size=10, replace=TRUE),
                 b=sample(20:30, size=10, replace=TRUE))
df[df$a==0,'a'] <- NA
df$a <- as.factor(df$a)

让我们创建一个具有因子级别的随机df

df <- data.frame(a=sample(0:10, size=10, replace=TRUE),
                 b=sample(20:30, size=10, replace=TRUE))
df[df$a==0,'a'] <- NA
df$a <- as.factor(df$a)

尝试
库(car);X$code
forcats::fct\u explicit\u na(X$code,0)
谢谢。我的数据框架只有几个因素。我还有几个关于NAs的专栏。我希望将所有NAs更改为“缺失”或某些文本,最好是。@akaDrHouse-如果所有列都是因子,则不是如OP所述。巴拉,我认为数字列应该是那样的,数字。事实上,没有理由认为它们应该是一个因素。从您的数据来看,似乎您
code
不应该是一个因素。为什么不使用
数字
整数
?试试
库(car);X$code
forcats::fct\u explicit\u na(X$code,0)
谢谢。我的数据框架只有几个因素。我还有几个关于NAs的专栏。我希望将所有NAs更改为“缺失”或某些文本,最好是。@akaDrHouse-如果所有列都是因子,则不是如OP所述。巴拉,我认为数字列应该是那样的,数字。事实上,没有理由认为它们应该是一个因素。从您的数据来看,似乎您
code
不应该是一个因素。为什么不是
数字
整数