小编A5C*_*2T1的帖子

对data.frame中的多个变量按组计算平均值和标准差

编辑 - 这个问题最初的标题是"R中的长到宽数据重塑"


我只是在学习R并试图找到方法来应用它来帮助我生命中的其他人.作为一个测试用例,我正在努力重塑一些数据,而且我在跟踪我在网上发现的例子时遇到了麻烦.我开始的是这样的:

ID  Obs 1   Obs 2   Obs 3
1   43      48      37
1   27      29      22
1   36      32      40
2   33      38      36
2   29      32      27
2   32      31      35
2   25      28      24
3   45      47      42
3   38      40      36
Run Code Online (Sandbox Code Playgroud)

而我想要最终得到的将是这样的:

ID  Obs 1 mean  Obs 1 std dev   Obs 2 mean  Obs 2 std dev
1   x           x               x           x
2   x           x               x           x
3   x           x               x           x
Run Code Online (Sandbox Code Playgroud)

等等.我不确定的是我是否需要在长篇数据中提供更多信息,或者是什么.我想,数学部分(找到平均值和标准偏差)将是容易的部分,但我找不到一种似乎能够正确地重塑数据以开始该过程的方法.

非常感谢您的帮助.

aggregate r reshape reshape2

25
推荐指数
5
解决办法
9万
查看次数

修复整个会话的set.seed

我使用R构建一个基于代理的模型,使用蒙特卡罗过程.这意味着我有许多使用某种随机引擎的函数.为了获得可重复的结果,我必须修复种子.但是,据我所知,我必须在每个随机抽签或样本之前设置种子.这是一个真正的痛苦.有没有办法修理种子?

set.seed(123)
print(sample(1:10,3))
# [1] 3 8 4
print(sample(1:10,3))
# [1]  9 10  1
set.seed(123)
print(sample(1:10,3))
# [1] 3 8 4
Run Code Online (Sandbox Code Playgroud)

r random-sample montecarlo agent-based-modeling

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

从多个文件夹中读取所有脚本和数据文件

我有两个文件夹,folder1folder2与周围的200个文件每个要么*rda*R.我想从两个目录中读取所有文件和数据集.我怎样才能做到这一点?

路径:

folder1:  C:\folder1
folder2:  C:\folder2 
Run Code Online (Sandbox Code Playgroud)

我的审判

setwd("C:/folder1")
myls <- ls() # do work as this will only list that are already loaded in the system 
setwd("C:/folder2")
myls2 <- ls()
myls  # do work as this will only list that are already loaded in the system 
Run Code Online (Sandbox Code Playgroud)

我知道这是一个简单的问题,但我没有任何答案.

file-io r

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

如何转动/忽略(转换/融合)数据框?

我如何'取消'一张桌子?什么是适当的技术术语?

更新:该术语称为融化

我有一个国家的数据框和每年的数据

Country     2001    2002    2003
Nigeria     1       2       3
UK          2       NA       1
Run Code Online (Sandbox Code Playgroud)

我希望有类似的东西

Country    Year    Value
Nigeria    2001    1
Nigeria    2002    2
Nigeria    2003    3
UK         2001    2
UK         2002    NA
UK         2003    1
Run Code Online (Sandbox Code Playgroud)

pivot-table r reshape reshape2

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

关于R中的set.seed()的问题

我理解什么set.seed()做什么以及什么时候可以使用它,但我仍然有很多关于功能的问题.以下是一些:

  1. set.seed()如果您set.seed()之前在会话中打过电话,是否可以"重置" 为"更随机"的内容?这甚至是必要的吗?
  2. 是否可以查看R当前使用的种子?
  3. 有没有办法set.seed()允许字母数字种子,可以在random.org上输入它们的方式(确保你处于高级模式,并看到表格的"第3部分",看看我的意思)?

random r

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

有条件地应用功能

我有这样的数据帧:

experiment iter  results
    A       1     30.0
    A       2     23.0
    A       3     33.3
    B       1     313.0
    B       2     323.0
    B       3     350.0
 ....
Run Code Online (Sandbox Code Playgroud)

有没有办法通过应用具有条件的函数来计算结果.在上面的例子中,该条件是特定实验的所有迭代.

A   sum of results (30 + 23, + 33.3)
B   sum of results (313 + 323 + 350)
Run Code Online (Sandbox Code Playgroud)

我正在考虑"应用"功能,但找不到让它工作的方法.

aggregate r

20
推荐指数
1
解决办法
9355
查看次数

在data.table上进行透视,类似于重塑熔化函数

我在SO上已经阅读了一些关于类似问题的参考,但是还没有找到解决方案,并且想知道是否有任何方法只使用data.table来执行以下操作.

我将使用一个简化的示例,但在实践中,我的数据表有> 1000列,类似于var1,var2,... var1000等.

dt <- data.table(uid=c("a","b"), var1=c(1,2), var2=c(100,200))
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种解决方案,可以让我得到一个类似于reshape融化功能的输出 -

> melt(dt, id=c("uid"))
uid variable value
1   a     var1     1
2   b     var1     2
3   a     var2   100
4   b     var2   200
Run Code Online (Sandbox Code Playgroud)

也就是说,除了uid之外的所有列都列在单个列下,并且在相邻列中具有相应的值.我已经尝试过使用list等的组合,但可能会遗漏一些明显的东西.

dt中的所有uid都是唯一的.

提前致谢.

r reshape data.table

19
推荐指数
3
解决办法
4448
查看次数

将数组重塑为data.frame

我有以下的数据结构(一个"原子矢量?")输出从daplyplyr,其中我有函数返回对于每个受试者,病症,和第三项不同的措施.

x = structure(c(-0.93, 0.39, 0.88, 0.63, 0.86, -0.69, 1.02, 0.29, 0.94, 
0.93, -0.01, 0.79, 0.32, 0.14, 0.13, -0.07, -0.63, 0.26, 0.07, 0.87,
-0.36, 1.043, 0.33, -0.12, -0.055, 0.07, 0.67, 0.48, 0.002, 0.008, 
-0.19, -1.39, 0.98, 0.43, -0.02, -0.15,-0.08, 0.74, 0.96, 0.44, -0.005,
1.09, 0.36, 0.04, 0.09, 0.17, 0.68, 0.51, 0.09, 0.12, -0.05, 0.11,
0.99, 0.62, 0.13, 0.06, 0.27, 0.74, 0.96, 0.45), .Dim = c(5L, 
2L, 2L, 3L), .Dimnames = structure(list(Subject = c("s1", "s2", 
"s3", "s4", …
Run Code Online (Sandbox Code Playgroud)

r transform reshape dataframe

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

使用`ftable`属性提取数据

我有时ftable纯粹使用该函数来表示层次类别.但是,有时候,当表很大时,我想在使用它之前进一步对表进行子集化.

假设我们从以下开始:

mytable <- ftable(Titanic, row.vars = 1:3)
mytable
##                    Survived  No Yes
## Class Sex    Age                   
## 1st   Male   Child            0   5
##              Adult          118  57
##       Female Child            0   1
##              Adult            4 140
## 2nd   Male   Child            0  11
##              Adult          154  14
##       Female Child            0  13
##              Adult           13  80
## 3rd   Male   Child           35  13
##              Adult          387  75
##       Female Child           17  14
##              Adult           89  76
## Crew  Male   Child …
Run Code Online (Sandbox Code Playgroud)

r subset

18
推荐指数
1
解决办法
701
查看次数

使`dcast`中的`drop`参数只查看公式的RHS

(从"reshape2"或"dplyr")中的drop参数在dcast从"长"数据集转到"宽"数据集时非常有用,并且即使对于长形式中不存在的组合也要创建列.

事实证明,使用drop也会影响公式左侧(LHS)和右侧(RHS)的组合.因此,它还基于LHS值的组合创建额外的.

有没有办法覆盖这种行为?


这是一些示例数据:

library(data.table)
DT <- data.table(v1 = c(1.105, 1.105, 1.105, 2.012, 2.012, 2.012),
                 ID = c(1L, 1L, 1L, 2L, 2L, 2L), 
                 v2 = structure(c(2L, 3L, 5L, 1L, 2L, 6L), 
                                .Label = c("1", "2", "3", "4", "5", "6"), 
                                class = "factor"),
                 v3 = c(3L, 2L, 2L, 5L, 4L, 3L)) 
Run Code Online (Sandbox Code Playgroud)

请注意,"v2"是一个factor包含6个级别的列.我基本上想要从"长"到"宽",但在列中添加任何缺失的因子级别(在本例中为"4").

reshape 处理形状,但不处理缺失的列:

reshape(DT, direction = "wide", idvar = c("ID", "v1"), timevar = "v2")
#       v1 ID v3.2 v3.3 v3.5 …
Run Code Online (Sandbox Code Playgroud)

r reshape reshape2 data.table

17
推荐指数
1
解决办法
754
查看次数