r - 条件均值陈述

标签 r conditional-statements mean

我有一个名为bwght的数据集,其中包含变量cigs(每天抽烟的雪茄)

当我使用以下方法在数据集cigs中计算bwght的平均值时:mean(bwght$cigs),我得到一个数字2.08。

在样本的1388名妇女中,只有212名吸烟(而1176名妇女不吸烟):
summary(bwght$cigs>0)给出结果:

Mode      FALSE    TRUE    NA's 
logical    1176     212       0

我被要求找出吸烟女性(212岁)中cigs的平均值。

我很难找到排除不吸烟者= 0的正确语法
我试过了:
  • mean(bwght$cigs| bwght$cigs>0)
  • mean(bwght$cigs>0 | bwght$cigs=TRUE)
  • if (bwght$cigs > 0){ sum(bwght$cigs) }
  • x <-as.numeric(bwght$cigs, rm="0"); mean(x)

  • 但是似乎没有任何效果!谁能帮帮我吗??

    最佳答案

    如果要排除不吸烟者,则有几种选择。最简单的可能是这样的:

    mean(bwght[bwght$cigs>0,"cigs"])
    

    对于数据框,第一个变量是行,第二个变量是列。因此,您可以使用dataframe[1,2]来获得第一行第二列的子集。您也可以在行选择中使用逻辑。通过使用bwght$cigs>0作为第一个元素,您将子集设置为仅使cigs不为零的行。

    您的其他服务器由于以下原因而无法正常工作:
    mean(bwght$cigs| bwght$cigs>0)
    

    这实际上是逻辑上的比较。您要查询bwght$cigs OR bwght$cigs>0的TRUE/FALSE结果,然后取平均值。我不太确定,但是我认为R甚至不能接受mean()函数的逻辑类型的数据。
    mean(bwght$cigs>0 | bwght$cigs=TRUE)
    

    同样的问题。您使用|符号,该符号返回逻辑,并且R尝试取逻辑的平均值。
    if(bwght$cigs > 0){sum(bwght$cigs)}
    

    偶然地,您最初是SAS程序员吗?看起来就像我一开始键入的样子。基本上,if()在R中的工作方式与在SAS中不同。在该示例中,您将bwght$cigs > 0用作if条件,这将不起作用,因为R仅查看bwght $ cigs> 0导致的向量的第一个元素。R处理与SAS不同的循环- checkout lapply之类的函数,轻按,等等。
    x <-as.numeric(bwght$cigs, rm="0")
    mean(x)
    

    老实说,我不知道会怎么做。如果rm="0"没有引号可能会起作用...?

    关于r - 条件均值陈述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555179/

    相关文章:

    javascript - 带有 grunt-angular-templates 的 MEAN 堆栈模板

    r - 如何拆分但忽略R中引用字符串中的分隔符?

    javascript - Shiny 表格中数学模式的外部 js

    css - 条件语句和即空白页?

    properties - 我无法配置具有多个条件的 log4j2 属性文件

    node.js - 当我尝试运行此代码时出现以下错误

    r - 使用阈值识别重复数据

    r - 添加 ISO 年标签的开始结束 ISO 周

    knockout.js - 在 knockout 条件中使用逻辑运算符 if 绑定(bind)

    python - Python 和 Matlab 中平均频率的差异