编辑 - 这个问题最初的标题是"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)
等等.我不确定的是我是否需要在长篇数据中提供更多信息,或者是什么.我想,数学部分(找到平均值和标准偏差)将是容易的部分,但我找不到一种似乎能够正确地重塑数据以开始该过程的方法.
非常感谢您的帮助.
我使用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) 我有两个文件夹,folder1并folder2与周围的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)
我知道这是一个简单的问题,但我没有任何答案.
我如何'取消'一张桌子?什么是适当的技术术语?
更新:该术语称为融化
我有一个国家的数据框和每年的数据
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) 我理解什么set.seed()做什么以及什么时候可以使用它,但我仍然有很多关于功能的问题.以下是一些:
set.seed()如果您set.seed()之前在会话中打过电话,是否可以"重置" 为"更随机"的内容?这甚至是必要的吗?set.seed()允许字母数字种子,可以在random.org上输入它们的方式(确保你处于高级模式,并看到表格的"第3部分",看看我的意思)?我有这样的数据帧:
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)
我正在考虑"应用"功能,但找不到让它工作的方法.
我在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都是唯一的.
提前致谢.
我有以下的数据结构(一个"原子矢量?")输出从daply在 plyr,其中我有函数返回对于每个受试者,病症,和第三项不同的措施.
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) 我有时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) (从"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 ×10
reshape ×5
reshape2 ×3
aggregate ×2
data.table ×2
dataframe ×1
file-io ×1
montecarlo ×1
pivot-table ×1
random ×1
subset ×1
transform ×1