我正试图找到笛卡尔积的dplyr函数.我有两个简单的data.frame,没有公共变量:
x <- data.frame(x=c("a","b","c"))
y <- data.frame(y=c(1,2,3))
Run Code Online (Sandbox Code Playgroud)
我想重现一下结果
merge(x,y)
x y
1 a 1
2 b 1
3 c 1
4 a 2
5 b 2
6 c 2
7 a 3
8 b 3
9 c 3
Run Code Online (Sandbox Code Playgroud)
非常感谢你
我试图复制一个数据帧(动物园对象)50次作为一个整体,并将结果作为一个矩阵,但我尝试过的所有命令似乎都不成功.我可以轻松编写一个可以执行此操作的函数,但我希望结果可以轻松实现rep.
以下面的例子为例
x <- zoo(data.frame(A = c(1,2,3,4,5,6), B = c(7,8,9,10,11,12), C = c(13,14,15,16,17,18)), order.by = seq(as.Date("2012-01-01"), as.Date("2012-06-01"), by = "month"))
#> x
# A B C
#2012-01-01 1 7 13
#2012-02-01 2 8 14
#2012-03-01 3 9 15
#2012-04-01 4 10 16
#2012-05-01 5 11 17
#2012-06-01 6 12 18
Run Code Online (Sandbox Code Playgroud)
我们试着复制x2次.我要找的最终结果是:
# [,1] [,2] [,3]
# [1,] 1 7 13
# [2,] 2 8 14
# [3,] 3 9 15
# [4,] 4 10 16
# …Run Code Online (Sandbox Code Playgroud) 我正在尝试获得类似于的功能expand.grid并在上工作data.frame。
我在替代方法中为data.frames的expand.grid找到了一种解决方案,该解决方案
使用merge函数来实现此目的。
由于merge与dplyrAlternative 相比速度相当慢full_join,因此我尝试使用它full_join来实现此功能,但无法正确完成。这是我失败的示例:
df <- data.frame(attribute = paste0('attr', rep(1:5, each=2)),
value = paste0(rep(1:5, each=2), rep(c('A','B'), 2)),
score = runif(10))
df
attribute value score
1 attr1 1A 0.75600171
2 attr1 1B 0.07086242
3 attr2 2A 0.92403325
4 attr2 2B 0.63414169
5 attr3 3A 0.78763834
6 attr3 3B 0.88576568
7 attr4 4A 0.75998967
8 attr4 4B 0.25205845
9 attr5 5A 0.99304728
10 …Run Code Online (Sandbox Code Playgroud) 在数据帧的Pass行上作为R中函数的参数进行跟进,列名指定参数:
我想用不同的参数组合训练以下模型:
library(xgboost)
library(Matrix)
df <- data.frame(y = sample(0:1, 1000, replace = TRUE),
a = rnorm(1000),
b = rnorm(1000),
c = rnorm(1000),
d = rnorm(1000))
train <- sparse.model.matrix(object = y~.-1, data = df)
model <- xgboost(data = train,
label = df$y,
# parameters
nrounds = 10,
subsample = 0.5,
colsample_bytree = 0.8)
Run Code Online (Sandbox Code Playgroud)
我创建的参数网格,我想网格的行通入xgboost功能,同时保持data和label参数不变。
param <- expand.grid(nrounds = c(10, 50, 100),
subsample = c(0.5, 0.8, 0.9),
colsample_bytree = c(0.8))
Run Code Online (Sandbox Code Playgroud)
我想使用列名来传递参数以指定它们(如果列名不是一个选项,则列的顺序也可以这样做),因为这将使调用可扩展用于不同的功能。
我认为dplyr太棒了.但是我最近更新了这个软件包,似乎总结不再为我分组.类似于以下用于在升级之前按组汇总的代码:
iris_tdt <- tbl_dt(iris)
iris_tdt %.% group_by(Species) %.% summarise(avg_petal_width = mean(Petal.Width))
avg_petal_width
1 1.199333
Run Code Online (Sandbox Code Playgroud)
这用于输出具有Species和avg_petal_width的表.现在,物种列似乎被删除,avg_petal_width聚合为单个值.group_by似乎正在工作,所以我猜这是一个总结的问题.
grp <- group_by(iris_tdt,Species)
groups(grp)
[[1]]
Species
Run Code Online (Sandbox Code Playgroud)
甚至Vignette的例子都没有正常工作.
hflights_df <- tbl_df(hflights)
planes <- group_by(hflights_df, TailNum)
delay <- summarise(planes,
dist = mean(Distance, na.rm = TRUE),
delay = mean(ArrDelay, na.rm = TRUE))
delay
dist delay
1 787.7832 7.094334
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激.
packageDescription("dplyr")$Version #--> 0.1.2
R.version.string #--> "R version 3.0.2 (2013-09-25)"
Run Code Online (Sandbox Code Playgroud)