【问题标题】:Manual prediction in R (data frame)R(数据帧)中的手动预测
【发布时间】:2016-06-09 16:38:49
【问题描述】:

我有数据框:

DF
   Chset Choices X1 X2 utility
1      1       8  1  1       2
2      1       2  0  1       3
3      1       1  1  0      -1
4      2       1  1  1       2
5      2       5  0  1       5
6      2       1  1  0      -1
7      2       2  0  0       0
8      3       1  1  1       2
9      3       2  0  1       6
10     3       5  1  0      -1
11     4       6  1  1       2
12     4       1  0  1      14
13     4       1  1  0      -1
14     4       1  0  0       0

如果实用程序在 Chset 中最大,我想创建列“预测”,我将 1 放在其中。例如,我们有 3 行,其中 Chset=1,并且这些行具有实用程序 (2,3,-1)。然后,在“预测”列中,第 2 行应该是 (0,1,0) - 1,因为它在 Chset=1 中具有最大效用,依此类推:

   Chset Choices X1 X2 utility predict
1      1       8  1  1       2       0
2      1       2  0  1       3       1
3      1       1  1  0      -1       0
4      2       1  1  1       2       0
5      2       5  0  1       5       1
6      2       1  1  0      -1       0
7      2       2  0  0       0       0
8      3       1  1  1       2       0
9      3       2  0  1       6       1
10     3       5  1  0      -1       0
11     4       6  1  1       2       0
12     4       1  0  1      14       1
13     4       1  1  0      -1       0
14     4       1  0  0       0       0

在那之后,我想作弊,预测是否正确。 如果 predict=1 并且“Choices”列中的值是其“Chset”中的最大值,则预测是正确的。例如,在 Chset=1 中,我们可以看到第二行的“predict”=1,而 Chset=1 中的最大“Choices”在第一行(等于 8),因此预测不正确。相比之下,在Chset=2中,第5行的“predict”等于1,并且该行在这个Chset=2中的“Choices”的最大值是最大的,所以这里的预测是正确的。为了欺骗所有情况,我想创建表“cheak”,如果预测正确,则该表等于 1,反之亦然。最后,我应该得到:

   Chset Choices X1 X2 utility predict cheak
1      1       8  1  1       2       0     0 
2      1       2  0  1       3       1     0
3      1       1  1  0      -1       0     0
4      2       1  1  1       2       0     0
5      2       5  0  1       5       1     1
6      2       1  1  0      -1       0     0
7      2       2  0  0       0       0     0
8      3       1  1  1       2       0     0
9      3       2  0  1       6       1     0
10     3       5  1  0      -1       0     0
11     4       6  1  1       2       0     0
12     4       1  0  1      14       1     0
13     4       1  1  0      -1       0     0
14     4       1  0  0       0       0     0

我该怎么做?

等待您的帮助

【问题讨论】:

    标签: r dataframe prediction


    【解决方案1】:

    应该这样做

    DF <- 
    unsplit(lapply(split(DF, DF$Chset),
                   function(x)  within(x, {
                       predict <- as.numeric(utility == max(utility))
                       check <- as.numeric(Choices == max(Choices) & predict == 1)
                   })),
            DF$Chset)
    

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多