在[r]中缺少值的数据中,如何使用多个关系运算符将值分配给新变量?

我有一个包含20个变量的数据集,并且缺少很多数据。我试图添加一个新的变量,并根据另一个变量的值为每一行分配一个值。下面是代码和一个较小的数据集,它与我的较大数据集产生的错误相同。有什么建议?

A=seq(1,6); B=seq(2,4)
length(A)=7; length(B)=7
m=cbind(A,B)

我不完全理解从矩阵到数据帧的转换。

df=as.data.frame(m)
df

首先尝试创建分类变量,以在分配新变量的值时使用

df$Acat=cut(df$A,
              breaks=c(-Inf,2.5,4.5,Inf),
              labels=c("low","mod","hi"))
df$Acat

下面的代码是我收到错误“:参数的长度为零”的地方

if (df$Acat.=="low"){
  df$C=1
}else if (df$Acat.=="mod"){
  df$C=2
}else if(df$Acat.=="hi"){
  df$C=3
}else {
  df$C=NA
}
df$C

我也用这种方式尝试过,使用数值变量来分配新变量的值,但出现此错误:

条件的长度> 1,并且仅使用第一个元素

if (df$A<2.5){
  df$D=1
} else if (df$A>=2.5 && df$A<4.5){
  df$D=2
} else if (df$A>=4.5){
  df$D=3
} else {
  df$D=NA
}
df$D
特朗布兰德

这里有一些提示。在R中,通常使用<-运算符将变量分配给名称公平地说,我什至不知道您可以为变量分配长度,所以我学到了一些新知识。

A <- seq(1, 6)
length(A) <- 7
B <- seq(2, 4)
length(B) <- 7

m <- cbind(A, B)

amatrix和a之间的区别在于data.frame,矩阵是数字的向量,其dim属性指定维(对于数组也是如此),而data.frame是一系列长度相等(行数)的列表(沿列) )。

实际上,这意味着data.frames可以在不同的列中包含任何内容,例如,一个可以是a character,另一个可以是an integer,而矩阵只能包含相同类型的数据。

> attributes(m)
$dim
[1] 7 2

$dimnames
$dimnames[[1]]
NULL

$dimnames[[2]]
[1] "A" "B"
> df <- as.data.frame(m)
> attributes(df)
$names
[1] "A" "B"

$class
[1] "data.frame"

$row.names
[1] 1 2 3 4 5 6 7

> is.list(m)
[1] FALSE
> is.list(df)
[1] TRUE

您用于尝试将值分配给列的if-else语句不起作用,因为它们不是矢量化的:它们需要单个TRUEFALSE,而不是逻辑矢量。通过求值,您可以看到表达式长于一个:

> df$Acat == "low"
[1]  TRUE  TRUE FALSE FALSE FALSE FALSE    NA

> length(df$Acat == "low")
[1] 7

相反,您可以使用所需的值构建命名向量,并使用子集操作将其放置在正确的位置:

df$Acat <- cut(df$A,
            breaks=c(-Inf,2.5,4.5,Inf),
            labels=c("low","mod","hi"))

named_vec <- c("low" = 1, "mod" = 2, "hi" = 3)
df$C <- named_vec[df$Acat]

这为您提供了此data.frame:

> df
   A  B Acat  C
1  1  2  low  1
2  2  3  low  1
3  3  4  mod  2
4  4 NA  mod  2
5  5 NA   hi  3
6  6 NA   hi  3
7 NA NA <NA> NA

还有多个其他选项可以得到相同的结果,但是我认为按名称进行子集比较直观。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将类别值分配给r中的多个变量

来自分类Dev

将多个类别值分配给r中的一系列数据帧变量

来自分类Dev

将运算符分配给R变量

来自分类Dev

使用equal运算符或使用花括号将值分配给变量之间有区别吗?

来自分类Dev

如何重载逗号运算符以将值分配给数组

来自分类Dev

如何将新值从lapply分配给列表中数据框的新列

来自分类Dev

如何将SQL Server数据中的值分配给SSIS中的变量

来自分类Dev

根据逻辑表达式将值分配给R数据框中的新列

来自分类Dev

如何使用R将宽数据中的一列中的值分配给其他列

来自分类Dev

使用R中的IF语句将NA值分配给数字变量

来自分类Dev

如何使用python中的循环将值分配给ndarray变量

来自分类Dev

如何使用jQuery将div中的值分配给变量

来自分类Dev

如何使用Java中的java.lang.reflect包将值分配给变量

来自分类Dev

“使用严格”:将值分配给多个变量

来自分类Dev

如何将列表中的值、用户输入的代码中的值分配给变量

来自分类Dev

如何将输出的多个值分配给数据帧的新多列?

来自分类Dev

将按钮的值分配给原始JavaScript中的变量

来自分类Dev

将选择值分配给PostgreSQL 9.3中的变量

来自分类Dev

无法将JSON值分配给HTML中的变量

来自分类Dev

将多个键分配给数组中的相同值

来自分类Dev

将值分配给Pandas中的多个列

来自分类Dev

将多个const分配给Javascript中的相同值

来自分类Dev

如何在命令行中使用条形将值分配给多个变量

来自分类Dev

将标识符分配给SQL数据中的重复值

来自分类Dev

在dart中,如何将const Map中的值分配给const变量?

来自分类Dev

如何基于r中的另一行将值分配给数据框中的行?

来自分类Dev

C#新运算符-分配给变量与不分配之间的区别

来自分类Dev

将值分配给R中数组的特定维

来自分类Dev

将值分配给R中数组的特定维

Related 相关文章

  1. 1

    将类别值分配给r中的多个变量

  2. 2

    将多个类别值分配给r中的一系列数据帧变量

  3. 3

    将运算符分配给R变量

  4. 4

    使用equal运算符或使用花括号将值分配给变量之间有区别吗?

  5. 5

    如何重载逗号运算符以将值分配给数组

  6. 6

    如何将新值从lapply分配给列表中数据框的新列

  7. 7

    如何将SQL Server数据中的值分配给SSIS中的变量

  8. 8

    根据逻辑表达式将值分配给R数据框中的新列

  9. 9

    如何使用R将宽数据中的一列中的值分配给其他列

  10. 10

    使用R中的IF语句将NA值分配给数字变量

  11. 11

    如何使用python中的循环将值分配给ndarray变量

  12. 12

    如何使用jQuery将div中的值分配给变量

  13. 13

    如何使用Java中的java.lang.reflect包将值分配给变量

  14. 14

    “使用严格”:将值分配给多个变量

  15. 15

    如何将列表中的值、用户输入的代码中的值分配给变量

  16. 16

    如何将输出的多个值分配给数据帧的新多列?

  17. 17

    将按钮的值分配给原始JavaScript中的变量

  18. 18

    将选择值分配给PostgreSQL 9.3中的变量

  19. 19

    无法将JSON值分配给HTML中的变量

  20. 20

    将多个键分配给数组中的相同值

  21. 21

    将值分配给Pandas中的多个列

  22. 22

    将多个const分配给Javascript中的相同值

  23. 23

    如何在命令行中使用条形将值分配给多个变量

  24. 24

    将标识符分配给SQL数据中的重复值

  25. 25

    在dart中,如何将const Map中的值分配给const变量?

  26. 26

    如何基于r中的另一行将值分配给数据框中的行?

  27. 27

    C#新运算符-分配给变量与不分配之间的区别

  28. 28

    将值分配给R中数组的特定维

  29. 29

    将值分配给R中数组的特定维

热门标签

归档