但是我想在R中这样做.
我有:
ret_series <- c(1, 2, 3)
x <- "ret_series"
Run Code Online (Sandbox Code Playgroud)
如何(1, 2, 3)在x不直接提及的情况下调用某些函数/操作ret_series?
我想根据两个分组变量聚合数据框中的一列,并用逗号分隔各个值.
这是一些数据:
data <- data.frame(A = c(rep(111, 3), rep(222, 3)), B = rep(1:2, 3), C = c(5:10))
data
# A B C
# 1 111 1 5
# 2 111 2 6
# 3 111 1 7
# 4 222 2 8
# 5 222 1 9
# 6 222 2 10
Run Code Online (Sandbox Code Playgroud)
"A"和"B"是分组变量,"C"是我想要折叠成逗号分隔character字符串的变量.我试过了:
library(plyr)
ddply(data, .(A,B), summarise, test = list(C))
A B test
1 111 1 5, 7
2 111 2 6
3 222 1 9
4 222 …Run Code Online (Sandbox Code Playgroud) 我有一个类似于这个的大型数据框:
df <- data.frame(dive=factor(sample(c("dive1","dive2"),10,replace=TRUE)),speed=runif(10))
> df
dive speed
1 dive1 0.80668490
2 dive1 0.53349584
3 dive2 0.07571784
4 dive2 0.39518628
5 dive1 0.84557955
6 dive1 0.69121443
7 dive1 0.38124950
8 dive2 0.22536126
9 dive1 0.04704750
10 dive2 0.93561651
Run Code Online (Sandbox Code Playgroud)
我的目标是在另一列等于某个值时平均一列的值,并对所有值重复此值.即在上面的示例中,我想为列speed的每个唯一值返回列的平均值dive.所以当时dive==dive1,平均值speed是这个,依此类推dive.
我正在使用以下代码创建数据框:
df <- data.frame(dbGetQuery(con, paste('select * from test')))
Run Code Online (Sandbox Code Playgroud)
结果如下:
UID BuildingCode AccessTime
1 123456 BUILD-1 2014-06-16 07:00:00
2 364952 BUILD-2 2014-06-15 08:00:00
3 95865 BUILD-1 2014-06-06 09:50:00
Run Code Online (Sandbox Code Playgroud)
然后我试图删除的建议行名称(1,2,3等),在这里通过使用此代码:
rownames(df) <- NULL
Run Code Online (Sandbox Code Playgroud)
但是当我打印出来时,df它仍然显示行名称.有没有办法在创建数据框时不包括行名?我找到了一个建议,row.name = FALSE但是当我尝试它时,我只是遇到错误(我可能把它放在了错误的地方).
编辑:我想要做的是将日期框架转换为HTML表格,我不希望行名称出现在表格中.
当我加载一个包时,我收到一条消息,说明:
"The following object is masked from 'package:xxx'
Run Code Online (Sandbox Code Playgroud)
例如,如果我加载testthat然后assertive,我得到如下:
library(testthat)
library(assertive)
## Attaching package: ‘assertive’
##
## The following objects are masked from ‘package:testthat’:
##
## has_names, is_false, is_less_than, is_null, is_true
Run Code Online (Sandbox Code Playgroud)
这条消息意味着什么,我该如何预防呢?
我正在做一个水平点图(?)ggplot2,它让我考虑尝试创建一个水平的条形图.但是,我发现能够做到这一点有一些限制.
这是我的数据:
df <- data.frame(Seller=c("Ad","Rt","Ra","Mo","Ao","Do"),
Avg_Cost=c(5.30,3.72,2.91,2.64,1.17,1.10), Num=c(6:1))
df
str(df)
Run Code Online (Sandbox Code Playgroud)
最初,我使用以下代码生成了一个点图:
require(ggplot2)
ggplot(df, aes(x=Avg_Cost, y=reorder(Seller,Num))) +
geom_point(colour="black",fill="lightgreen") +
opts(title="Avg Cost") +
ylab("Region") + xlab("") + ylab("") + xlim(c(0,7)) +
opts(plot.title = theme_text(face = "bold", size=15)) +
opts(axis.text.y = theme_text(family = "sans", face = "bold", size = 12)) +
opts(axis.text.x = theme_text(family = "sans", face = "bold", size = 12))
Run Code Online (Sandbox Code Playgroud)
但是,我现在正在尝试创建一个水平条形图,并发现我无法这样做.我试过了coord_flip(),这也没有帮助.
ggplot(df, aes(x=Avg_Cost, y=reorder(Seller,Num))) +
geom_bar(colour="black",fill="lightgreen") +
opts(title="Avg Cost") +
ylab("Region") + xlab("") + ylab("") + xlim(c(0,7)) + …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建文件夹以存储数据拉动.我想用拉动中的数据日标记文件夹.
防爆.我在5天前从mysql中提取数据我想将该文件夹命名为5天前的日期.
MySQL可以轻松处理日期算术.我不确定R是怎么做到的.我应该在POSIXct中减去适当的秒数然后转换为POSIXlt来命名文件夹MM_DD_YYYY吗?
或者,还有更好的方法?
我有一个包含超过1500个json对象的文件,我想在R中使用.我已经能够将数据作为列表导入,但是很难将其强制转换为有用的结构.我想创建一个数据框,其中包含每个json对象的行和每个key:value对的列.
我用这个小的假数据集重新创建了我的情况:
[{"name":"Doe, John","group":"Red","age (y)":24,"height (cm)":182,"wieght (kg)":74.8,"score":null},
{"name":"Doe, Jane","group":"Green","age (y)":30,"height (cm)":170,"wieght (kg)":70.1,"score":500},
{"name":"Smith, Joan","group":"Yellow","age (y)":41,"height (cm)":169,"wieght (kg)":60,"score":null},
{"name":"Brown, Sam","group":"Green","age (y)":22,"height (cm)":183,"wieght (kg)":75,"score":865},
{"name":"Jones, Larry","group":"Green","age (y)":31,"height (cm)":178,"wieght (kg)":83.9,"score":221},
{"name":"Murray, Seth","group":"Red","age (y)":35,"height (cm)":172,"wieght (kg)":76.2,"score":413},
{"name":"Doe, Jane","group":"Yellow","age (y)":22,"height (cm)":164,"wieght (kg)":68,"score":902}]
Run Code Online (Sandbox Code Playgroud)
数据的一些功能:
基于这个问题:R list(structure(list()))到数据框,我尝试了以下内容:
json_file <- "test.json"
json_data <- fromJSON(json_file)
asFrame <- do.call("rbind.fill", lapply(json_data, as.data.frame))
Run Code Online (Sandbox Code Playgroud)
使用我的真实数据和这些假数据,最后一行给出了这个错误:
Error in data.frame(name = "Doe, John", group = "Red", `age (y)` = 24, :
arguments imply differing number of rows: 1, 0
Run Code Online (Sandbox Code Playgroud) 我需要在R中按日期对数据框进行排序.日期都是"dd/mm/yyyy"的形式.日期在第3列.列标题为V3.我已经看到了如何按列对数据框进行排序,我已经看到了如何将字符串转换为日期值.我无法将两者结合起来按日期对数据框进行排序.
说我有一个data.frame对象:
df <- data.frame(name=c('black','black','black','red','red'),
type=c('chair','chair','sofa','sofa','plate'),
num=c(4,5,12,4,3))
Run Code Online (Sandbox Code Playgroud)
现在我想计算每个组合的观察次数name和type.这可以这样做:
table(df[ , c("name","type")])
Run Code Online (Sandbox Code Playgroud)
或者也可能plyr,(虽然我不确定如何).
但是,如何将结果合并到原始数据框中?这样结果将如下所示:
df
# name type num count
# 1 black chair 4 2
# 2 black chair 5 2
# 3 black sofa 12 1
# 4 red sofa 4 1
# 5 red plate 3 1
Run Code Online (Sandbox Code Playgroud)
这里count现在存储从聚集的结果.
一个解决方案plyr也可能很有趣,但我希望看到这是如何用基础R完成的.