我有一个超过150万行的大型数据集,来自600k个独特的主题,因此许多主题都有多行.我试图找到其中一个主题输入错误的DOB的情况.
test <- data.frame(
ID=c(rep(1,3),rep(2,4),rep(3,2)),
DOB = c(rep("2000-03-01",3), "2000-05-06", "2002-05-06",
"2000-05-06", "2000-05-06", "2004-04-06", "2004-04-06")
)
> test
ID DOB
1 1 2000-03-01
2 1 2000-03-01
3 1 2000-03-01
4 2 2000-05-06
5 2 2002-05-06
6 2 2000-05-06
7 2 2000-05-06
8 3 2004-04-06
9 3 2004-04-06
Run Code Online (Sandbox Code Playgroud)
我所追求的是一些基本上确定'2'有错误的代码.我可以想一些关于使用for循环的方法,但这在计算上是低效的.
谢谢
无法在线查看解决方案,但我认为这可能很常见.
write.csv我基本上总是有参数row.name设置为F.是否有可能运行一次线和更新会话的其余参数的默认值?paste <- paste(sep="")哪个运行并且没有返回错误但似乎什么也没做(并且没有破坏该paste功能).这是另外一个,我总是设置sep=""有paste...exclude=NULL在使用时一样table,我可以看到N/A值.编辑:所以,我正在寻找一个解决方案,因为如果可能的多种功能工作:paste,write.csv,table和其他功能,如这些.
我想不出这个问题到底应该是什么,所以如果你对它应该有什么建议请告诉我.
我之前已经看到过将数据读入工作脚本文件中带标签或白色间隔的数据框的方法.例如:
dat <- SOMETHING(
person1 12 15
person2 15 18
person3 20 14
)
Run Code Online (Sandbox Code Playgroud)
假设您正在从网站抓取数据并且只是想要表示一些东西,它就像白色空间等一样.我可以打开一个文本文件然后保存它然后用csv读取.或者类似于我我确定我已经看过以这种方式阅读的数据而且不能为我的生活记住如何......
谢谢
有没有人对ggplot中轴标题的位置有任何了解?
ggplot(mtcars, aes(x=mpg, y=hp)) + geom_point() + ylab("HP") + ylim(50,350) + xlim(10,35)
Run Code Online (Sandbox Code Playgroud)

你可以看到HP中的P低于200的顶部.同样,mp上的m几乎与20上的0一致(或部分重叠),将g留在20和25的中间.我会想到H和P之间的间隙的中间位于200中的2的中间(垂直).如果这是有道理的.
在标签上添加一些空格("HP")有助于修复它.显然标题相对于某些坐标是居中的,我的猜测是一个"盒子",一直到x标签的底部(对于y标题)和y标签的左边(对于x)标题).当相对于实际绘图区域具有它们时将是更期望的.
这可以实现吗?
我有以下ggplot2代码绘制从第3到第97个四分位数的功能区:
h <- ggplot(l, aes(x=age[limit]))
h <- h + geom_ribbon(aes(ymin=X3rd[limit], ymax=X97th[limit]), fill="gray80")
h
Run Code Online (Sandbox Code Playgroud)
geom_ribbon 帮助页面表明渐变,渐变2等是用于填充此geom的"相关比例".我所追求的是让外面的色带呈浅灰色,中间呈深灰色,外面再呈浅灰色,但我得到的印象(以及一些谷歌结果加强了这种印象)渐变不能实际上应用于功能区.
我有一个名为dat_new的数据框,基本上是诊所访问数据,hrn是患者ID,而dov是访问日期(每人多次访问).然后我有一个名为事件的数据框,其中有过期的住院(每人多次入院).
我想做的是,对于每次门诊就诊,我想总结在门诊就诊之前发生的住院,简单.
这适用于plyr的ddply,需要一点时间但效果很好.
temp <- ddply(dat_new, .(hrn,dov), summarise,
dka2 = sum(event$event_code[which(event$hrn==hrn & event$doa <= dov)]==2),
dka3 = sum(event$event_code[which(event$hrn==hrn & event$doa <= dov)]==3),
dka8 = sum(event$event_code[which(event$hrn==hrn & event$doa <= dov)]==8)
)
Run Code Online (Sandbox Code Playgroud)
现在,尝试在dplyr中重写,我收到一个错误
Error: binding not found: 'event_code'
Run Code Online (Sandbox Code Playgroud)
我有这样编码:
temp2 <- group_by(dat_new, hrn, dov)
temp3 <- summarise(temp2,
dka2 = sum(event$event_code[which(event$hrn==hrn & event$doa <= dov)]==2))
Run Code Online (Sandbox Code Playgroud)
显然event_code不在temp2数据框中.在'总结'时,是否dplyr无法与'其他'数据帧一起使用?如果有一个更好的方法来做'查找'/总和,我正在做的事情我都是耳朵.
我尝试了几次尝试以不同的顺序在vanilla R上加载包,以尝试消除任何名称空间问题.
谢谢
编辑 - 可重复的例子
这是一个快速而肮脏的例子,只是为了说明这个问题.如果我们制作一个'查询'data.frame,其中每辆车有2个,mpg大约为500,那么我们可以尝试通过原始data.frame,查找新的data.frame并将两个mpgs相加.plyr给出了预期的数字大约1000.dplyr错误.
# add the model names as a column so they're easier to get at
mtcars$models <- row.names(mtcars)
# create a …Run Code Online (Sandbox Code Playgroud) test <- data.frame(
y=seq(18,41,1),
x=24:1
)
ggplot(test, aes(y=y, x=x)) + geom_bar(stat="identity", aes(width=1)) +
opts( axis.text.x = theme_blank(), axis.ticks.x = theme_blank()) +
scale_x_continuous(breaks=NULL) +
coord_cartesian(ylim = c(17, 42))
Run Code Online (Sandbox Code Playgroud)

就旋转和翻转而言,我想这个图中的y轴是什么,沿着顶部是什么,x轴是右边的x轴.因此,条形图正在从图的右侧"出来",顶部最长/最高,底部最短.如果它顺时针旋转90度,然后翻转一条可以实现它的垂直线.
coord_flip()和scale_y_reverse()在正确的路径上走了一段路.
编辑:
我想这非常接近,只需要将y轴放到图的顶部即可.
ggplot(test, aes(y=y, x=x)) + geom_bar(stat="identity", aes(width=1)) +
opts(axis.text.y = theme_blank(), axis.ticks.y = theme_blank()) +
scale_x_continuous(breaks=NULL) + scale_y_reverse() + coord_flip() + scale_x_reverse()
Run Code Online (Sandbox Code Playgroud) 这是一个更大的更复杂的数据集的最小例子,只是试图让我的头脑周围的东西.
> grep("X10\\.1+",c("X10.10","X10.11","X10.12"))
[1] 1 2 3
Run Code Online (Sandbox Code Playgroud)
现在我2原本只期望被归还,因为'+'应该是'前面元素中的一个或多个'.我认为逃避这段时间(我必须处理,所以想要保持在示例中)可能导致问题.
> grep("X101+",c("X1010","X1011","X1012"))
[1] 1 2 3
Run Code Online (Sandbox Code Playgroud)
那么,我对'+'功能的理解是错误的?
结论:
谢谢@James.所以我的理解是+是'另外一个或多个前面的元素'而不是它实际意味着什么,这是'只需要前面一个元素的一个或多个'.
11+会完成我的想法(在第一个之后有1个或更多的1个等).干杯