<?php
$a1 = ['image 1', 'image 2'];
$a2 = [
'name' => ['0.14997300-1503597010599f11d2249df30.jpg', '0.24654000-150113339659797a543c31f24.jpg'],
'type' => ['image/jpeg', 'image/jpeg'],
'tmp_name' => ['C:\Users\--\AppData\Local\Temp\php509E.tmp', 'C:\Users\--\AppData\Local\Temp\php509F.tmp'],
'error' => [0, 0],
'size' => [55560, 9425]
];
$result = [];
foreach ($a1 as $k => $v) {
$result[] = [
'text' => $v,
'image_data' => array_combine(array_keys($a2), array_column($a2, $k))
];
}
print_r($result);
如何创建包含虚拟变量1和0的新列以指示行的观察。
我希望为列x
创建类似的内容test <- data.frame(
x=rep(letters[1:3],each=2),
y=c(4,4,5,5,5,6)
)
x y
1 a 4
2 a 4
3 b 5
4 b 5
5 c 5
6 c 6
或y列
x y x_a x_b x_c
1 a 4 1 0 0
2 a 4 1 0 0
3 b 5 0 1 0
4 b 5 0 1 0
5 c 5 0 0 1
6 c 6 0 0 1
我设法在新列中使用ifelse在基础R中。
我希望在dplyr中执行此操作,以便它可以在sql表上运行。
x y y_4 y_5 x_6
1 a 4 1 0 0
2 a 4 1 0 0
3 b 5 0 1 0
4 b 5 0 1 0
5 c 5 0 1 0
6 c 6 0 0 1
row_number()函数不适用于sql表。
错误:此数据库不支持窗口函数con <- DBI::dbConnect(RSQLite::SQLite(), path = "")
dbWriteTable(con, "test",test)
testdb <- tbl(con, "test")
testdb %>% mutate(i = row_number(), i2 = 1) %>% spread(x, i2, fill = 0)
。我正在使用SQLite ..
答案 0 :(得分:0)
对于x:
library(dplyr)
test %>% bind_cols(as_data_frame(setNames(lapply(unique(test$x),
function(x){as.integer(test$x == x)}),
paste0('x_', unique(test$x)))))
x y x_a x_b x_c
1 a 4 1 0 0
2 a 4 1 0 0
3 b 5 0 1 0
4 b 5 0 1 0
5 c 5 0 0 1
6 c 6 0 0 1
对于y:
test %>% bind_cols(as_data_frame(setNames(lapply(unique(test$y),
function(x){as.integer(test$y == x)}),
paste0('y_', unique(test$y)))))
x y y_4 y_5 y_6
1 a 4 1 0 0
2 a 4 1 0 0
3 b 5 0 1 0
4 b 5 0 1 0
5 c 5 0 1 0
6 c 6 0 0 1