小编And*_*ier的帖子

ggplot2 - 具有组内比例而非频率的多组直方图

我有三个ExperimentCohort因素确定的学生群体.对于每个学生,我有一个LetterGrade,也是一个因素.我想LetterGrade为每个人绘制一个类似直方图的条形图ExperimentCohort.运用

ggplot(df, alpha = 0.2, 
       aes(x = LetterGrade, group = ExperimentCohort, fill = ExperimentCohort))                                                                                                                                                       
  + geom_bar(position = "dodge")
Run Code Online (Sandbox Code Playgroud)

让我非常接近,但这三个ExperimentCohorts学生的数量并不相同.为了在更均匀的场上比较这些,我希望y轴是每个字母等级的队列中的比例.到目前为止,还没有计算这个比例,并在绘图之前将其放在一个单独的数据框中,我还没有找到办法做到这一点.

SO和其他地方的类似问题的每个解决方案都涉及aes(y = ..count../sum(..count..)),但sum(.. count ..)在整个数据帧中执行,而不是在每个队列中执行.有人有建议吗?这是创建示例数据帧的代码:

df <- data.frame(ID = 1:60, 
        LetterGrade = sample(c("A", "B", "C", "D", "E", "F"), 60, replace = T),
        ExperimentCohort = sample(c("One", "Two", "Three"), 60, replace = T))
Run Code Online (Sandbox Code Playgroud)

谢谢.

r ggplot2

19
推荐指数
2
解决办法
4万
查看次数

使用Rscript,是否有一种很好的方法来抑制非脚本输出?

可能重复:
R从依赖项中禁止startupMessages

我读过关于使用sink("NUL")/的内容sink("/dev/null"),但是他们都没有解决我遇到的问题.即使我包裹library()在命令中sink("NUL")sink(),我以RSCRIPT呼叫输出,我不希望看到的信息的所有方式:

Loading required package: Matrix
Loading required package: methods
Loading required package: lattice
Loaded glmnet 1.8

Loading required package: MASS
Loading required package: lme4

Attaching package: 'lme4'

The following object(s) are masked from 'package:stats':

    AIC, BIC

Loading required package: R2WinBUGS
Loading required package: coda

Attaching package: 'coda'

The following object(s) are masked from 'package:lme4':

    HPDinterval

Loading required package: abind
Loading required package: foreign

arm (Version 1.5-05, built: 2012-6-6) …
Run Code Online (Sandbox Code Playgroud)

r rscript

11
推荐指数
1
解决办法
7756
查看次数

将这个丑陋的for循环转换为更友好的R形式

一直在使用SO作为我工作的资源.感谢您召集这样一个伟大的社区.

我正在尝试做一些有点复杂的事情,我现在能想到的唯一方法就是使用一对嵌套的for循环(我知道在R中不赞成)......我有三百万的记录 - 奇数课程注册:学生UserID与CourseID配对.在每一行中,都有一堆数据,包括开始/结束日期和分数等等.我需要做的是,对于每次注册,计算该用户在注册课程之前所参加的课程的平均分数.

我用于for循环的代码如下:

data$Mean.Prior.Score <- 0
for (i in as.numeric(rownames(data)) {
    sum <- 0
    count <- 0
    for (j in as.numeric(rownames(data[data$UserID == data$UserID[i],]))) {
            if (data$Course.End.Date[j] < data$Course.Start.Date[i]) {
                sum <- sum + data$Score[j]
                count <- count + 1
            }
    }
if (count != 0)
    data$Mean.Prior.Score[i] <- sum / count
}
Run Code Online (Sandbox Code Playgroud)

我很确定这会起作用,但它的运行速度非常慢...我的数据框有超过三百万行,但经过10分钟的好处后,外部循环只运行了850条记录.这似乎比时间复杂性所暗示的要慢,特别是考虑到每个用户平均只有5或6个课程.

哦,我应该提一下,我在运行循环之前用as.POSIXct()转换了日期字符串,所以日期比较步骤不应该太慢......

必须有更好的方法来做到这一点...任何建议?


编辑:根据mnel的要求......终于得到dput了很好的发挥.不得不补充一下control = NULL.这是'tis:

structure(list(Username = structure(1:20, .Label = c("100225", 
"100226", "100228", "1013170", "102876", "105796", "106753", 
"106755", "108568", "109038", "110150", "110200", …
Run Code Online (Sandbox Code Playgroud)

loops aggregate r vectorization

7
推荐指数
1
解决办法
375
查看次数

将数据帧拆分为数据帧列表,但如何重新合并?

我有一个很大的数据框,有两个用于课程和用户的ID列,我需要将每个课程分成一个数据框,以进行进一步的分析/子集化.在从每个单独的课程数据帧中删除了很多行之后,我需要将它们重新组合在一起.

我把它分开了,你猜对了,split这就像我需要它一样.然而,未分裂比我想象的更难.R文档说" unsplit反转了" 的效果split,但到目前为止我在网上的阅读表明,当拆分列表的元素本身是数据帧时,情况并非如此.

我该怎么做才能重新加入我修改过的dfs?

split r

4
推荐指数
2
解决办法
1万
查看次数

tryCatch()显然忽略了一个警告

我正在编写一个函数,它使用kmeans来确定bin宽度,将连续测量(预测概率)转换为整数(3个bin中的一个).我偶然发现了一个边缘情况,我的算法可以(正确地)预测整个集合的相同概率,我想处理这种情况.我正在以下列方式使用rattle包的binning()功能:

btsKmeansBin <- function(x, k = 3, default = c(0, 0.3, 0.5, 1)) {
  result <- binning(x, bins = k, method = "kmeans", ordered = T)
  bins <- attr(result, "breaks")
  attr(bins, "names") <- NULL
  bins <- bins[order(bins)]
  bins[1] <- 0
  bins[length(bins)] <- 1
  return(bins)
}
Run Code Online (Sandbox Code Playgroud)

打开此函数x <- c(.5,.5,.5,.5,.5,.5),您将在该order(bins)步骤中收到错误,因为bins它将为NULL,因此不是向量.

显然,如果x只有一个不同的值,那么kmeans就不行.在这种情况下,我想返回defaultbin分区.发生这种情况时,binning问题"警告:不考虑变量".所以我想用它tryCatch来处理这个警告,但是result <- ...用以下代码包围这行并不像我期望的那样工作:

...
tryCatch({
  result <- binning(x, bins = k, method …
Run Code Online (Sandbox Code Playgroud)

warnings r try-catch

4
推荐指数
1
解决办法
443
查看次数

标签 统计

r ×5

aggregate ×1

ggplot2 ×1

loops ×1

rscript ×1

split ×1

try-catch ×1

vectorization ×1

warnings ×1