R 在比较数据框中的字符串值后向数据框中添加一列

韩国猕猴桃

编辑提出一个更好的问题:

libary("ggplot2)
data("diamonds")
diamonds_small <- diamonds[1:5000, ]
cutnewfunc <- function(x){
 ifelse(x == c("Ideal", "Premium", "Very Good", "Good", "Fair"), c("Above Average", "Above Average", "Very Good", "Below Average", "Below Average"), "Default")
}
cutvect = as.vector(diamonds_small$cut)
newdiamonds = cutnewfunc(cutvect)
newdiamonds

结果:[1]“高于平均水平”“高于平均水平”“默认”“默认”“默认”“默认”“默认”
[8]“很好”“默认”“默认”“默认”“默认”“默认” “默认”
[15] “默认” “默认” “默认” “默认” “低于平均水平” “默认” “默认”

如您所见,有很多“默认”值不应该发生,因为调用 cutvect 将导致:

[1] "Ideal"     "Premium"   "Good"      "Premium"   "Good"      "Very Good" "Very Good" "Very Good" "Fair"     

[10]“非常好”“好”“理想”“优质”“理想”“优质”“优质”“理想”“好”
[19]“好”“非常好”“好”“非常好”“非常好”好”“非常好”“非常好”“非常好”“高级”

我将如何比较每个值,而不是导致“默认”?

谢谢!


我需要比较数据框中的字符串值,相应地生成结果,并将其添加到数据框中的新列中。

我想我需要: 1. 取带有参数字符串的列并形成一个向量, 2. 比较字符串并形成一个新向量和结果, 3. 将结果向量作为新列添加到原始列中数据框。

比较字符串位对我不起作用。

问题说我需要使用 'ifelse' 函数,但比较字符串导致 'only 适用于逻辑或数值'错误。

任何人都可以帮忙吗?

谢谢!

格雷戈尔·托马斯

你的问题在这里:

x == c("Ideal", "Premium", "Very Good", "Good", "Fair")

== 不像你想象的那样工作......我们可以尝试一些简单的案例来看看它的作用:

> x = "Premium"
> x == c("Ideal", "Premium", "Very Good", "Good", "Fair")
[1] FALSE  TRUE FALSE FALSE FALSE


> x = c("Premium", "Fair")
> x == c("Ideal", "Premium", "Very Good", "Good", "Fair")
[1] FALSE FALSE FALSE FALSE FALSE
Warning message:
In x == c("Ideal", "Premium", "Very Good", "Good", "Fair") :
  longer object length is not a multiple of shorter object length
## Notice this result is ALL FALSE!


> x = rep("Premium", 10)
> x == c("Ideal", "Premium", "Very Good", "Good", "Fair")
 [1] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE

当我们这样做时x == y,如果xy的长度相同,则比较将成对进行:x 的第一个元素与 y 的第一个元素相比,x 的第二个元素与 y 的第二个元素相比,依此类推。如果其中一个xy比另一个长,较短的将重复直到长度相等,但比较总是成对的

关于组合因子级别的更好方法的完整答案在这里:清理因子级别(折叠多个级别/标签)最好的方法是不要使用ifelse. 但是,如果您必须使用ifelse,请这样做:

cutnewfunc <- function(x){
  ifelse(x %in% c("Ideal", "Premium"), "Above Average",
    ifelse(x %in% c("Very Good"), "Very Good"), "Default"))
}

我没有完全写出来,因为这听起来像是家庭作业。剩下的我让你填。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R:对数据框中每一列的字符串计数

来自分类Dev

在R中的列中对齐数据框的字符串

来自分类Dev

在R中的列中对齐数据框的字符串

来自分类Dev

向R数据框中的同一列值添加唯一标识符

来自分类Dev

向R数据框中的同一列值添加唯一标识符

来自分类Dev

R:根据另一列中的值从一列中的拆分字符串中检索数据

来自分类Dev

使用预定义的表在 r 中搜索数据框的字符串并添加相应的列

来自分类Dev

删除数据框列(R)中的一部分字符串

来自分类Dev

R - 将一列数据添加到数据框中的现有列

来自分类Dev

将一列数据框添加到R中的现有数据框列中?

来自分类Dev

在R中多个数据框中的一列中创建唯一值列表

来自分类Dev

在R中的多个数据框中的一列中创建唯一值列表

来自分类Dev

R:选择数据框列中的一列

来自分类Dev

根据R中的另一数据框替换一列中的值

来自分类Dev

从列表中的数据框创建数据框,并在R的一列中创建最大值

来自分类Dev

比较 r 数据框中几列的值

来自分类Dev

调整R数据框中的一列

来自分类Dev

对R中数据框的一列进行计数

来自分类Dev

在R中,如何根据第一列的内容将一列添加到数据框中?

来自分类Dev

在R中的字符串中缺少数据框中创建列

来自分类Dev

R将数据框中的每一列除以最后一行的值

来自分类Dev

R将数据框中的每一列除以最后一行的值

来自分类Dev

R-数据框中的条件子字符串

来自分类Dev

计算 R 数据框中特定字符串的数量

来自分类Dev

R 反转数据框中的字符串

来自分类Dev

将 R 中数据框中的所有值转换为字符串

来自分类Dev

获取由R数据框中的另一列中的值分隔的一列的箱线图统计信息

来自分类Dev

根据大于或小于前几列的条件,向R中的数据框添加一列

来自分类Dev

根据大于或小于前几列的条件,向R中的数据框添加一列

Related 相关文章

  1. 1

    R:对数据框中每一列的字符串计数

  2. 2

    在R中的列中对齐数据框的字符串

  3. 3

    在R中的列中对齐数据框的字符串

  4. 4

    向R数据框中的同一列值添加唯一标识符

  5. 5

    向R数据框中的同一列值添加唯一标识符

  6. 6

    R:根据另一列中的值从一列中的拆分字符串中检索数据

  7. 7

    使用预定义的表在 r 中搜索数据框的字符串并添加相应的列

  8. 8

    删除数据框列(R)中的一部分字符串

  9. 9

    R - 将一列数据添加到数据框中的现有列

  10. 10

    将一列数据框添加到R中的现有数据框列中?

  11. 11

    在R中多个数据框中的一列中创建唯一值列表

  12. 12

    在R中的多个数据框中的一列中创建唯一值列表

  13. 13

    R:选择数据框列中的一列

  14. 14

    根据R中的另一数据框替换一列中的值

  15. 15

    从列表中的数据框创建数据框,并在R的一列中创建最大值

  16. 16

    比较 r 数据框中几列的值

  17. 17

    调整R数据框中的一列

  18. 18

    对R中数据框的一列进行计数

  19. 19

    在R中,如何根据第一列的内容将一列添加到数据框中?

  20. 20

    在R中的字符串中缺少数据框中创建列

  21. 21

    R将数据框中的每一列除以最后一行的值

  22. 22

    R将数据框中的每一列除以最后一行的值

  23. 23

    R-数据框中的条件子字符串

  24. 24

    计算 R 数据框中特定字符串的数量

  25. 25

    R 反转数据框中的字符串

  26. 26

    将 R 中数据框中的所有值转换为字符串

  27. 27

    获取由R数据框中的另一列中的值分隔的一列的箱线图统计信息

  28. 28

    根据大于或小于前几列的条件,向R中的数据框添加一列

  29. 29

    根据大于或小于前几列的条件,向R中的数据框添加一列

热门标签

归档