在 R 中查看图表后如何添加单个数据点

Posted

技术标签:

【中文标题】在 R 中查看图表后如何添加单个数据点【英文标题】:How do add single datapoints after a chart review in R 【发布时间】:2022-01-11 19:01:13 【问题描述】:

我正在尝试将从图表审查中收集的新数据添加到我的数据库中,但似乎无法到达那里。

我尝试编写一个新变量,然后使用逻辑函数来选择要使用的数据点,但使用整个变量不起作用,因为它是一个向量而不是单个数据点。如何对其进行编程以使用来自相同观察但不同变量的数据点?

mydf <- structure(list(Year = c(2014L, 2014L, 2015L, 2015L, 2016L),
                       Var1 = c(15, 12, 2, 16, NA), 
                       Var2 = c(15, 13, 104, NA, NA), 
                       Agree = c(1, 0, 0, 1, 1)), 
                  .Names = c("Year",  "Var1", "Var2", "Agree"), 
                  row.names = c(NA, 5L), class = "data.frame")

## mydf

#    Year Var1 Var2 Agree
#  1 2014   15   15  1
#  2 2014   13   12  0
#  3 2015    2  104  0
#  4 2015   16   NA  1
#  5 2016   NA   NA  1


mydf$true <- if_else(mydf$Agree == 1, mydf$Var1, mydf$Var2) 

## Error Message
# Error: `true` must be length 0 (length of `condition`) or one, not 5.
# Run `rlang::last_error()` to see where the error occurred.

## What I want
#   Year Var1 Var2 Agree True
# 1 2014   15   15     1   15
# 2 2014   13   12     0   12
# 3 2015    2  104     0  104
# 4 2015   16   NA     1   16
# 5 2016   NA   NA     1   NA

有什么想法吗?

【问题讨论】:

执行您的代码时,我得到了正确的输出。该错误可能是由于您使用函数 if_else 加载了多个包。 也许可以试试 ifelse 函数而不是 if_else ? 【参考方案1】:

我不确定您最初拥有哪些软件包。我就是这样做的,得到了​​你需要的答案:

mydf <- structure(list(Year = c(2014L, 2014L, 2015L, 2015L, 2016L),
                       Var1 = c(15, 12, 2, 16, NA), 
                       Var2 = c(15, 13, 104, NA, NA), 
                       Agree = c(1, 0, 0, 1, 1)), 
                  .Names = c("Year",  "Var1", "Var2", "Agree"), 
                  row.names = c(NA, 5L), class = "data.frame")
    
library(dplyr)
    
mydf$true <- if_else(mydf$Agree == 1, mydf$Var1, mydf$Var2) 

【讨论】:

你可以在这里使用更多的dplyr动词:mydf &lt;- mydf %&gt;% mutate(true = if_else(Agree == 1, Var1, Var2))【参考方案2】:

正如@Maël 所指出的,您可能使用 if_else 函数加载了多个包。要修复此错误,您可以指定要使用的包。

library(dplyr)

mydf$true <- dplyr::if_else(mydf$Agree == 1, mydf$Var1, mydf$Var2) 

一个小补充,从长远来看对你使用R有帮助,我建议你处理dplyrmutate。检查以下代码作为上述问题的示例:

mydf %>%
  mutate(True = ifelse(Agree == 1, Var1, Var2))

【讨论】:

以上是关于在 R 中查看图表后如何添加单个数据点的主要内容,如果未能解决你的问题,请参考以下文章

基于选定的单选按钮选项,在闪亮的R中单击提交按钮后如何显示图表和数据?

highcharts图表中如何标出数据点。

如何在单个浏览器页面上向 Dash 应用程序添加多个图表?

如何删除grafana中的单个数据点?

什么类型的 s-s-rS 图表将绘制单个指定点?

excel坐标轴不等间距刻度该怎么设置