虽然数据框列必须具有相同的行数,但有没有办法创建长度不等的数据框.我不想将它们保存为列表的单独元素,因为我经常不得不将这些信息作为csv文件发送给人们,这是最简单的数据框架.
x = c(rep("one",2))
y = c(rep("two",10))
z = c(rep("three",5))
cbind(x,y,z)
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,cbind()函数只是回收较短的列,以便它们在每列中都有10个元素.我怎么能改变它只是为了长度为2,10和5.
我过去通过执行以下操作完成了此操作,但效率很低.
df = data.frame(one=c(rep("one",2),rep("",8)),
two=c(rep("two",10)), three=c(rep("three",5), rep("",5)))
Run Code Online (Sandbox Code Playgroud) 我有以下数据框,我想将其分解为10个不同的数据框.我想将最初的100行数据帧分成10行10个数据帧.我可以做以下事情并获得理想的结果.
df = data.frame(one=c(rnorm(100)), two=c(rnorm(100)), three=c(rnorm(100)))
df1 = df[1:10,]
df2 = df[11:20,]
df3 = df[21:30,]
df4 = df[31:40,]
df5 = df[41:50,]
...
Run Code Online (Sandbox Code Playgroud)
当然,当初始数据帧较大或者没有可以分解的简单数量的段时,这不是执行此任务的优雅方式.
因此,鉴于上述情况,我们假设我们有以下数据框架.
df = data.frame(one=c(rnorm(1123)), two=c(rnorm(1123)), three=c(rnorm(1123)))
Run Code Online (Sandbox Code Playgroud)
现在我想将它拆分为由200行组成的新数据帧,以及包含剩余行的最终数据帧.什么是更优雅(也称为"快速")方式来执行此任务.
我正在使用ggplot2,我正在尝试生成一个显示以下数据的图表.
df=data.frame(score=c(4,2,3,5,7,6,5,6,4,2,3,5,4,8),
age=c(18,18,23,50,19,39,19,23,22,22,40,35,22,16))
str(df)
df
Run Code Online (Sandbox Code Playgroud)
我没有做变量的频率图(见下面的代码),而是想生成每个x值的平均值图.所以我想绘制每个年龄段的平均分数.在x轴上的18岁时,我们可能在y轴上有3个得分.在23岁时,我们的平均得分可能为4.5,依此类推(编辑:修正的平均值).理想情况下,这将用条形图表示.
ggplot(df, aes(x=factor(age), y=factor(score))) + geom_bar()
Error: stat_count() must not be used with a y aesthetic.
Run Code Online (Sandbox Code Playgroud)
只是不确定如何使用ggplot2在R中执行此操作,并且似乎无法在此类图上找到任何内容.从统计数据来看,我不知道我想绘制的情节是否是正确的事情,但这是一个不同的商店.
谢谢!
我经常发现自己不得不在R中执行重复性任务.不得不一遍又一遍地在一个或多个数据结构上运行相同的函数,这非常令人沮丧.
例如,假设我在R中有三个独立的数据帧,我想删除每个具有缺失值的数据帧中的行.对于三个数据帧,在每个df上运行na.omit()并不是那么困难,但是如果有一百个类似的数据结构需要相同的动作,它就会变得非常低效.
df1 <- data.frame(Region=c("Asia","Africa","Europe","N.America","S.America",NA),
variable=c(2004,2004,2004,2004,2004,2004), value=c(35,20,20,50,30,NA))
df2 <- data.frame(Region=c("Asia","Africa","Europe","N.America","S.America",NA),
variable=c(2005,2005,2005,2005,2005,2005), value=c(55,350,40,90,99,NA))
df3 <- data.frame(Region=c("Asia","Africa","Europe","N.America","S.America",NA),
variable=c(2006,2006,2006,2006,2006,2006), value=c(300,200,200,500,300,NA))
tot04 <- na.omit(df1)
tot05 <- na.omit(df2)
tot06 <- na.omit(df3)
Run Code Online (Sandbox Code Playgroud)
处理R中重复性任务的一般指导原则是什么?
是的,我认识到这个问题的答案是针对一个人面临的任务,但我只是询问用户在有重复性任务时应该考虑的一般事项.
与此问题相关.
gender <- c("F", "M", "M", "F", "F", "M", "F", "F")
age <- c(23, 25, 27, 29, 31, 33, 35, 37)
mydf <- data.frame(gender, age)
mydf[ sample( which(mydf$gender=='F'), 3 ), ]
Run Code Online (Sandbox Code Playgroud)
不是选择多行(上面的情况是3),如何用"F"随机选择20%的行?那么在带有"F"的五行中,如何随机抽样20%的这些行.
我在R中创建一个图,需要创建一条线,其中一些值是投影.投影用虚线表示.这是代码:
df = data.frame(date=c(rep(2008:2013, by=1)),
value=c(303,407,538,696,881,1094))
ggplot(df, aes(date, value, width=0.64)) +
geom_bar(stat = "identity", fill="#336699", colour="black") +
ylim(c(0,1400)) + opts(title="U.S. Smartphone Users") +
opts(axis.text.y=theme_text(family="sans", face="bold")) +
opts(axis.text.x=theme_text(family="sans", face="bold")) +
opts(plot.title = theme_text(size=14, face="bold")) +
xlab("Year") + ylab("Users (in millions)") +
opts(axis.title.x=theme_text(family="sans")) +
opts(axis.title.y=theme_text(family="sans", angle=90)) +
geom_segment(aes(x=2007.6, xend=2013, y=550, yend=1350), arrow=arrow(length=unit(0.4,"cm")))
Run Code Online (Sandbox Code Playgroud)
所以我创建了一条从2008年到2013年延伸的生产线.但是,我想要一条从2008年到2011年的实线,以及从2011年到结束的虚线.我只是做两个单独的线段,或者是否有一个单独的命令我可以用来获得所需的结果.
假设我想生成一个数据框,其中包含一个以下列格式构造的列.
2011-08-01
2011-08-02
2011-08-03
2011-08-04
...
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以使用该seq()命令生成此数据.
像下面这样的东西:(显然不起作用)
seq(2011-08-01:2011-08-31)
Run Code Online (Sandbox Code Playgroud)
我是否必须使用toDate和regex以此特定格式生成此日期.
相关问题在这里.
所以我有一个货币值包含美元符号和逗号的字符向量.但是,我想尝试在同一步骤中删除逗号和美元符号.
这会删除美元符号=
d = c("$0.00", "$10,598.90", "$13,082.47")
gsub('\\$', '', d)
Run Code Online (Sandbox Code Playgroud)
这会删除逗号=
library(stringr)
str_replace_all(c("10,0","tat,y"), fixed(c(","), "")
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以一步删除这两个字符.
我意识到我可以将gsub结果保存到一个新变量中,然后在该变量上重新应用该(或另一个函数).但我想我想知道一步到位.
我正在使用R.假设我有一个城市向量,我想在字符串中单独使用这些城市名称.
city = c("Dallas", "Houston", "El Paso", "Waco")
phrase = c("Hey {city}, what's the meaning of life?")
Run Code Online (Sandbox Code Playgroud)
所以我想最终得到四个单独的短语.
"Hey Dallas, what's the meaning of life?"
"Hey Houston, what's the meaning of life?"
...
Run Code Online (Sandbox Code Playgroud)
是否有类似于Python中的format()的函数,这将允许我以简单/有效的方式执行此任务?
想避免下面的事情.
for( i in city){
phrase = c("Hey ", i, "what's the meaning of life?")
}
Run Code Online (Sandbox Code Playgroud) 这部分与我昨天的问题有关.
所以这里是数据和ggplot2中创建的图.
df = data.frame(date=c(rep(2008:2013, by=1)),
value=c(303,407,538,696,881,1094))
ggplot(df, aes(date, value, width=0.64)) +
geom_bar(stat = "identity", fill="#336699", colour="black") +
ylim(c(0,1400)) + opts(title="U.S. Smartphone Users") +
opts(axis.text.y=theme_text(family="sans", face="bold")) +
opts(axis.text.x=theme_text(family="sans", face="bold")) +
opts(plot.title = theme_text(size=14, face="bold")) +
xlab("Year") + ylab("Users (in millions)") +
opts(axis.title.x=theme_text(family="sans")) +
opts(axis.title.y=theme_text(family="sans", angle=90)) +
geom_segment(aes(x=2007.6, xend=2013, y=550, yend=1350), arrow=arrow(length=unit(0.4,"cm")))
Run Code Online (Sandbox Code Playgroud)
是否可以使用ggplot2在下图中生成squigly趋势线
我在R中创建了绘图,然后在Adobe Photoshop中对其进行了修饰,我想知道是否可以在R中直接生成那条波浪形的趋势线.
如果在ggplot2中无法做到这一点,是否有任何特定的R包可以接受此任务?
我不是要求重现图表.那不是问题.只是产生趋势线似乎是一个问题.
