小编Jaa*_*aap的帖子

访问变量值,其中变量名称存储在字符串中

对其他语言提出了类似的问题:C,sql,java等.

但是我想在R中这样做.

我有:

ret_series <- c(1, 2, 3)
x <- "ret_series"
Run Code Online (Sandbox Code Playgroud)

如何(1, 2, 3)x不直接提及的情况下调用某些函数/操作ret_series

variables r r-faq

53
推荐指数
3
解决办法
5万
查看次数

将列折叠/连接/聚合到每个组中的单个逗号分隔字符串

我想根据两个分组变量聚合数据框中的一列,并用逗号分隔各个值.

这是一些数据:

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)

aggregate r r-faq

53
推荐指数
3
解决办法
2万
查看次数

按组计算平均值

我有一个类似于这个的大型数据框:

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.

r dataframe r-faq

52
推荐指数
3
解决办法
8万
查看次数

从数据框中删除行名称的显示

我正在使用以下代码创建数据框:

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表格,我不希望行名称出现在表格中.

printing r dataframe rowname output-formatting

51
推荐指数
4
解决办法
14万
查看次数

什么"以下对象被掩盖'package:xxx'"是什么意思?

当我加载一个包时,我收到一条消息,说明:

"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)

这条消息意味着什么,我该如何预防呢?

r r-faq

51
推荐指数
1
解决办法
10万
查看次数

ggplot2中的水平条形图

我正在做一个水平点图(?)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)

r ggplot2

50
推荐指数
1
解决办法
8万
查看次数

如何从/到日期减去/添加天数?

我正在尝试构建文件夹以存储数据拉动.我想用拉动中的数据日标记文件夹.

防爆.我在5天前从mysql中提取数据我想将该文件夹命名为5天前的日期.

MySQL可以轻松处理日期算术.我不确定R是怎么做到的.我应该在POSIXct中减去适当的秒数然后转换为POSIXlt来命名文件夹MM_DD_YYYY吗?

或者,还有更好的方法?

r date r-faq

48
推荐指数
3
解决办法
10万
查看次数

将导入的json数据导入数据框

我有一个包含超过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)

数据的一些功能:

  • 这些对象都包含相同数量的key:value对,尽管某些值为null
  • 每个对象有两个非数字列(名称和组)
  • name是唯一标识符,有10个左右的组
  • 许多名称和组内容包含空格,逗号和其他标点符号.

基于这个问题: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)

import json r dataframe

47
推荐指数
2
解决办法
8万
查看次数

如何按日期对数据框进行排序

我需要在R中按日期对数据框进行排序.日期都是"dd/mm/yyyy"的形式.日期在第3列.列标题为V3.我已经看到了如何按列对数据框进行排序,我已经看到了如何将字符串转换为日期值.我无法将两者结合起来按日期对数据框进行排序.

sorting r date dataframe

46
推荐指数
4
解决办法
12万
查看次数

计算每组观察/行数,并将结果添加到数据框

说我有一个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)

现在我想计算每个组合的观察次数nametype.这可以这样做:

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完成的.

aggregate r count r-faq

46
推荐指数
4
解决办法
9万
查看次数