R 函数计算唯一事件的平均数

R 函数计算唯一事件的平均数,r,R,我有下面的代码,它符合我的要求。但是我想知道是否有更简单/更好的方式到达那里 我这样做的总体目标是为总体数据构建一个单独的汇总表,因此由此得出的平均值将进入该汇总表 Test <- data.frame( ID = c(1,1,1,2,2,2,3,3,3), Thing = c("Apple","Apple","Pear","Pear","Apple","Apple","Kiwi","Apple","Pear"), Day = c("Mon","Tue","Wed") ) c

我有下面的代码,它符合我的要求。但是我想知道是否有更简单/更好的方式到达那里

我这样做的总体目标是为总体数据构建一个单独的汇总表,因此由此得出的平均值将进入该汇总表

Test <- data.frame(
  ID = c(1,1,1,2,2,2,3,3,3),
  Thing = c("Apple","Apple","Pear","Pear","Apple","Apple","Kiwi","Apple","Pear"),
  Day = c("Mon","Tue","Wed")
)

countfruit <- function(data){
df <- as.data.frame(table(data$ID,data$Thing))

df <- dcast(df, Var1 ~ Var2)
  colnames(df) = c("ID", "Apple","Kiwi", "Pear")

  #fixing the counts to apply a 1 for if there is any count there:
  df$Apple[df$Apple>0] = 1
  df$Kiwi[df$Kiwi>0] = 1
  df$Pear[df$Pear>0] = 1

  #making a new column in the summary table of how many for each person
  df$number <- rowSums(df[2:4])

return(mean(df$number))}

result <- countfruit(Test)

Test看起来您正在尝试计算每列中有多少个非零条目。如果是这样,可以使用
作为.logical
,将任何非零数字转换为
TRUE
(又称
1
),也可以只计算一行中的零数并从相关列数中减去。 例如,如果我正确地遵循了您的代码,那么您的数据帧是

  Var1 Apple Kiwi Pear
1    1     2    0    1
2    2     2    0    1
3    3     1    1    1
因此,
(ncol(df)-1)-length(df[1,]==0)
给出第一行的计数。
或者,使用
as.logical
将所有非零值转换为
TRUE
aka
1
,并计算感兴趣的列上的
行和。

看起来您正试图计算每列中有多少个非零条目。如果是这样,可以使用
作为.logical
,将任何非零数字转换为
TRUE
(又称
1
),也可以只计算一行中的零数并从相关列数中减去。 例如,如果我正确地遵循了您的代码,那么您的数据帧是

  Var1 Apple Kiwi Pear
1    1     2    0    1
2    2     2    0    1
3    3     1    1    1
因此,
(ncol(df)-1)-length(df[1,]==0)
给出第一行的计数。
或者,使用
as.logical
将所有非零值转换为
TRUE
aka
1
,并在感兴趣的列上计算
行和。

我认为你把问题复杂化了,这里有一个保持相同原理的小版本

df <- table(data$ID,data$Thing)
mean(rowSums(df>0))   ##  mean of non zero by column

我认为你把问题复杂化了,这里有一个小版本,保持了相同的原理

df <- table(data$ID,data$Thing)
mean(rowSums(df>0))   ##  mean of non zero by column

对不起,我没有完全得到你想要的代码,你能扩展一点吗?对不起,我没有完全得到你想要的代码,你能扩展一点吗?太棒了!是的,我觉得我太复杂了,所以我想我会问:)谢谢。你能解释一下“with”的作用吗?我查看了帮助文件,但无法解读:(
with
在由数据构造的环境中计算R表达式,可能修改原始数据。因此在
with(Test,…)
你的data.frame测试变成了一个环境,因此不需要使用$,ID访问变量,而不是测试$ID。通过帮助,尝试示例,没有其他学习方法。太棒了!是的,我感觉自己太复杂了,因此我想问:)谢谢。你能解释一下“with”的作用吗?我查看了帮助文件,但无法解读:(
with
在由数据构造的环境中计算R表达式,可能修改原始数据。因此在
with(Test,…)
你的data.frame测试变成了一个环境,因此不需要使用$,ID而不是Test$ID来访问变量。通过帮助,尝试示例,没有其他学习方法。@Froom2我同意你的看法。我决定写一篇关于在
R
中做事的方法的小教程;agstudy肯定写了一个干净的解决方案。@Froom2我同意你的看法。我决定我想写一篇关于如何在
R
中做事的迷你教程;agstudy肯定写了一个干净的解决方案。