R对每行

时间:2017-06-28 10:46:59

标签: r statistics anova

我有一个数据集,我有三个场景的50个城市的级别和趋势。以下是样本数据 -

City <- paste0("City",1:50)

L1 <- sample(100:500,50,replace = T)
L2 <- sample(100:500,50,replace = T)
L3 <- sample(100:500,50,replace = T)

T1 <- runif(50,0,3)
T2 <- runif(50,0,3)
T3 <- runif(50,0,3)

df <- data.frame(City,L1,L2,L3,T1,T2,T3)

现在,在3个场景中,我使用以下代码找到了最低级别和最小趋势 -

df$L_min <- apply(df[,2:4],1,min)
df$T_min <- apply(df[,5:7],1,min)

现在我想分别检查这些最小值是否在水平和趋势之间有显着差异。因此,请使用第2-4列检查 L_min ,使用第5-7列检查 T_min 。这需要针对每个城市(行)进行,如果有意义,则返回与其显着不同的列。

如果有人可以指导如何做到这一点会有所帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

我会把我的想法放在这里,但我仍然期待着为他人提出想法。

> head(df)
  City  L1  L2  L3       T1         T2        T3 L_min      T_min
1 City1 251 176 263 1.162313 0.07196579 2.0925715   176 0.07196579
2 City2 385 406 264 0.353124 0.66089524 2.5613980   264 0.35312402
3 City3 437 333 426 2.625795 1.43547766 1.7667891   333 1.43547766
4 City4 431 405 493 2.042905 0.93041254 1.3872058   405 0.93041254
5 City5 101 429 100 1.731004 2.89794314 0.3535423   100 0.35354230
6 City6 374 394 465 1.854794 0.57909775 2.7485841   374 0.57909775
> df$FC <- rowMeans(df[,2:4])/df[,8]
> df <- df[order(-df$FC), ]
> head(df)
  City  L1  L2  L3        T1        T2         T3 L_min      T_min       FC
18 City18 461 425 117 2.7786757 2.6577894 0.75974121   117 0.75974121 2.857550
38 City38 370 117 445 0.1103141 2.6890014 2.26174542   117 0.11031411 2.655271
44 City44 101 473 222 1.2754675 0.8667007 0.04057544   101 0.04057544 2.627063
10 City10 459 361 132 0.1529519 2.4678493 2.23373484   132 0.15295194 2.404040
16 City16 232 393 110 0.8628494 1.3995549 1.01689217   110 0.86284938 2.227273
15 City15 499 475 182 0.3679611 0.2519497 2.82647041   182 0.25194969 2.117216

现在,您可以根据顶部的列2:4获得最多不同的行。第5:7列以类似的方式。

有关stastical测试的一些提示:

  1. 总是使用t.test(参数,基于均值)而不是wilcoxon(u-mann whitney - 非参数,基于中位数),它具有更多的力量;的无论其
  2. - 数据集应该很大。 hipotesis:蒙特利尔的公民人数高于魁北克省;当你从每个城市带走一个100人时,t .test会正常工作,所以我们的身高测量值为200人100比100。

    - 所有样本中的分布应接近正态分布;或两个样本应具有远离正常的相似分布 - 它可能是二项式的。无论如何,当一个样本具有正态分布时,我们无法使用此测试,而第二个样本没有。

    - 两个样本的大小应该是eqal,因此100对100是可以的,但87对234不完全,p值将低于0.05,但它可能被误传。

    如果您的数据不符合上述条件,我更喜欢非参数测试,功耗更低但更耐用。