【发布时间】:2017-10-19 19:43:31
【问题描述】:
我是一名 R/编码新手。我想根据某些条件为列分配分数。我在下面有一些随机数据,这有助于解释我自己的数据。
name average score
a -3.56714858 0
a -0.41934072 0
a -1.02200958 0
b 0.67713883 0
b 0.29228235 0
b 0.11338159 0
c -1.48595572 0
c -0.35328884 0
c -1.26491347 0
d -0.27093065 0
d -0.14913264 0
我想做什么;
- 如果(name=a & average > 2sd of benchmark)然后分配 score=2
- if (name=a & average
- 等
编辑:基准 = 平均值(前 3 个“a”),所以我根据它们与前三个的比较来为其余的“a”打分,所以它们与前 3 个有多少标准偏差.
每个字母都有自己的基准或数字,我将其与之进行比较。所以我是一个个字母一个字母地手动检查,比如:
df$score[df$name == "a"
& df$average >= benchmark
& df$average < (benchmark + sd(benchmark)]<- 1
df$score[df$name == "a"
& df$average >= (benchmark + sd(benchmark)
& df$average < (benchmark+ 2sd(benchmark))]<- 2.0
df$score[df$name == "a"
& df$average > (benchmark+ 2sd(benchmark))]<- 2.5
df$score[df$name == "a"
& df$average < benchmark
& df$average >= (benchmark - sd(benchmark)]<- 1
df$score[df$name == "a"
& df$average < (benchmark - sd(benchmark)
& df$average >= (benchmark - 2sd(benchmark))]<- 0.5
df$score[df$name == "a"
& df$average < (benchmark - 2sd(benchmark))]<- 0
我有数千行和比字母 a-d 更多的组。我希望我能找到一种更快的方法来做到这一点。我的长方法也会产生错误。请帮忙
我对每个组都有相同的评分原则,但是每个组的基准不同。
【问题讨论】:
-
每组是否总是有一个阈值?结果是否总是有两个可能的值(大于阈值或小于阈值)?这些阈值以及高于/低于值的阈值是否因组(字母)而异?
-
每组我有 6 个分数。大于平均值和小于平均值的 1sd,大于平均值的 1sd 和小于平均值的 2sd,以及大于平均值的 2sd,反之亦然。每个字母都有自己的评分标准,因此即使评分理念相同,它们都被与不同的东西进行比较
-
您能否以您拥有的形式(例如数据框)分享上述 a、b、c、d 的示例阈值? (否则,要回答我们必须创建自己的版本)
-
是
mycondition值或值列表还是什么? -
刚刚进行了编辑。我希望我现在说清楚了。谢谢
标签: r statistics aggregate grouping