我有一个data.frame包含三个二进制变量的调查数据。数据已经在列联表中,前3列是答案(1=是,0=否),第四列显示答案的总数。行是三个不同的组。
我的目的是计算Z分数,以检查比例与总的相比是否有显著差异
这是我的数据:
library(dplyr) #loading libraries
df <- structure(list(var1 = c(416, 1300, 479, 417),
var2 = c(265, 925,473, 279),
var3 = c(340, 1013, 344, 284),
totalN = c(1366, 4311,1904, 1233)),
class = "data.frame",
row.names = c(NA, -4L),
.Names = c("var1","var2", "var3", "totalN"))
这些是我的总价值
dfTotal <- df %>% summarise_all(funs(sum(., na.rm=TRUE)))
dfTotal
dfTotal <- data.frame(dfTotal)
rownames(dfTotal) <- "Total"
zScore <- function (cntA, totA, cntB, totB) {
#calculate
avgProportion <- (cntA + cntB) / (totA + totB)
probA <- cntA/totA
probB <- cntB/totB
SE <- sqrt(avgProportion * (1-avgProportion)*(1/totA + 1/totB))
zScore <- (probA-probB) / SE
return (zScore)
}
df %>% mutate_all(funs(zScore(., totalN,dftotal$var1,dfTotal$totalN)))
所以这里当前使用的参数dftotal$var1和dftotal$totaln不起作用,但我不知道如何将它们输入公式。对于第一个参数,它不能总是var1,而应该是var2、var3(和totalN),以匹配第一个参数。
如果您想在DPLYR
管道中使用zscore
函数,我们需要首先整理您的数据,并添加包含DFTotal
中的值的新变量:
library(dplyr)
library(tidyr)
# add grouping variables we'll need further down
df %>% mutate(group = 1:4) %>%
# reshape data to long format
gather(question,count,-group,-totalN) %>%
# add totals by question to df
group_by(question) %>%
mutate(answers = sum(totalN),
yes = sum(count)) %>%
# calculate z-scores by group against total
group_by(group,question) %>%
summarise(z_score = zScore(count, totalN, yes, answers)) %>%
# spread to wide format
spread(question, z_score)
## A tibble: 4 x 4
# group var1 var2 var3
#* <int> <dbl> <dbl> <dbl>
#1 1 0.6162943 -2.1978303 1.979278
#2 2 0.6125615 -0.7505797 1.311001
#3 3 -3.9106430 2.6607258 -4.232391
#4 4 2.9995381 0.4712734 0.438899
本文向大家介绍如何在R中创建具有随机值的矩阵?,包括了如何在R中创建具有随机值的矩阵?的使用技巧和注意事项,需要的朋友参考一下 通常,使用给定值创建矩阵,但是如果我们要创建具有随机值的矩阵,则将对矩阵函数使用常规方法。R中的随机选择可以根据我们的目标以多种方式完成,例如,如果要从正态分布中随机选择值,则将使用rnorm函数并将其存储在矩阵中,然后将其传递到矩阵函数中。 示例 输出结果 示例 输出结
我想通过使用或任何其他函数在R中创建以下序列。 基本上,。
我有一个42行2列的矩阵[a]。然后,我有一个函数随机选择这些行中的12行,对随机选择的矩阵进行线性回归,并输出线性回归的系数(斜率和截距)。 在R中,我想从原始矩阵中得到其他30行,这些行在随机函数中没有被选中,然后使用这些数据和我新计算的系数,生成一个点(y值)。因此,我将有30个Y值,然后使用新的Y值和新的30行矩阵中的1列计算RMSE(http://upload.wikimedia.org
中的值匹配功能非常有用。但据我理解,它不足以支持二维或高维输入。 例如,假设和是相同列数的矩阵,我想将的行与的行进行匹配。“R”函数调用不这样做。列表的输入也存在同样的不足。 我已经实现了我自己的版本,名为(附在下面),但我想知道您对此任务的解决方案是什么。
我试图研究我的数据中有零值的概率,我开发了一个代码,当一列数据为零时输出另一列数据的值,这正是我所需要的。但是,对于577BY29数据流中的每一列和其他28列都要这样做是很困难的,所以我决定创建一个for循环,在我有以下内容的地方为我这样做: 您可以看到,当输出数据帧有n=29列时,代码循环正确,但对于上面指定的条件,代码循环不正确。 请帮忙,谢谢!
问题内容: 我已经创建了分区函数,但是无法将其应用于表。我不确定我要去哪里错。 这是我的分区函数: 尝试应用于此表: 但是,当我尝试执行表脚本时,出现此错误: 请帮忙。 分步骤重新发布我的代码 皮纳尔的补习非常棒!这是一个简短的摘要 为每个分区添加文件组 创建分区功能 AS RANGE left FOR VALUES (20120301) 创建分区方案 AS PARTITION Partition