我创建了以下代码,生成组合列表
library(conjoint)
data(ice)
experiment<-expand.grid(
flavor=c("chocolate","vanilla","strawberry"),
price=c("$1.50","$2.00","$2.50"),
container=c("cone","cup"),
topping=c("yes","no"))
# Dividir el conjunto de datos en grupos de 3 filas
grupos <- split(experiment, rep(1:ceiling(nrow(experiment)/3), each=3, length.out=nrow(experiment)))
# Crear escenarios para cada grupo
escenarios <- lapply(grupos, function(grupo) {
# Mostrar los objetos de cada grupo
for (i in 1:nrow(grupo)) {
cat("Objeto", i, ":\n")
print(grupo[i, ])
cat("\n")
}
})
获取以下对象列表
Objeto 1 :
flavor price container topping
1 chocolate $1.50 cone yes
Objeto 2 :
flavor price container topping
2 vanilla $1.50 cone yes
Objeto 3 :
flavor price container topping
3 strawberry $1.50 cone yes
Objeto 1 :
flavor price container topping
4 chocolate $2.00 cone yes
Objeto 2 :
flavor price container topping
5 vanilla $2.00 cone yes
Objeto 3 :
flavor price container topping
6 strawberry $2.00 cone yes
Objeto 1 :
flavor price container topping
7 chocolate $2.50 cone yes
Objeto 2 :
flavor price container topping
8 vanilla $2.50 cone yes
Objeto 3 :
flavor price container topping
9 strawberry $2.50 cone yes
Objeto 1 :
flavor price container topping
10 chocolate $1.50 cup yes
Objeto 2 :
flavor price container topping
11 vanilla $1.50 cup yes
Objeto 3 :
flavor price container topping
12 strawberry $1.50 cup yes
Objeto 1 :
flavor price container topping
13 chocolate $2.00 cup yes
Objeto 2 :
flavor price container topping
14 vanilla $2.00 cup yes
Objeto 3 :
flavor price container topping
15 strawberry $2.00 cup yes
Objeto 1 :
flavor price container topping
16 chocolate $2.50 cup yes
Objeto 2 :
flavor price container topping
17 vanilla $2.50 cup yes
Objeto 3 :
flavor price container topping
18 strawberry $2.50 cup yes
Objeto 1 :
flavor price container topping
19 chocolate $1.50 cone no
Objeto 2 :
flavor price container topping
20 vanilla $1.50 cone no
Objeto 3 :
flavor price container topping
21 strawberry $1.50 cone no
Objeto 1 :
flavor price container topping
22 chocolate $2.00 cone no
Objeto 2 :
flavor price container topping
23 vanilla $2.00 cone no
Objeto 3 :
flavor price container topping
24 strawberry $2.00 cone no
Objeto 1 :
flavor price container topping
25 chocolate $2.50 cone no
Objeto 2 :
flavor price container topping
26 vanilla $2.50 cone no
Objeto 3 :
flavor price container topping
27 strawberry $2.50 cone no
Objeto 1 :
flavor price container topping
28 chocolate $1.50 cup no
Objeto 2 :
flavor price container topping
29 vanilla $1.50 cup no
Objeto 3 :
flavor price container topping
30 strawberry $1.50 cup no
Objeto 1 :
flavor price container topping
31 chocolate $2.00 cup no
Objeto 2 :
flavor price container topping
32 vanilla $2.00 cup no
Objeto 3 :
flavor price container topping
33 strawberry $2.00 cup no
Objeto 1 :
flavor price container topping
34 chocolate $2.50 cup no
Objeto 2 :
flavor price container topping
35 vanilla $2.50 cup no
Objeto 3 :
flavor price container topping
36 strawberry $2.50 cup no
我想将其转换为数据框。我尝试过以下代码:
f <- as.data.frame(do.call(cbind, grupos))
得到了不想要的结果
我希望将其放入数据框中的方式是
对象1 | 对象2 | 对象3 |
---|---|---|
巧克力 1.50 美元 甜筒 是的 |
香草 1.50 美元 甜筒 是的 |
草莓 1.50 美元 甜筒 是的 |
第二个 | 行 |
我尝试了如下所示的代码
# Crear un dataframe para almacenar los escenarios reconfigurados
df_escenarios <- data.frame(matrix(ncol = 3, nrow = length(escenarios)))
colnames(df_escenarios) <- c("Object 1", "Object 2", "Object 3")
# Llenar el dataframe con los escenarios
for (i in 1:length(escenarios)) {
if (length(escenarios[[i]]) > 0) { # Verificar que haya escenarios en el grupo
df_escenarios[i, ] <- unlist(escenarios[[i]])
} else {
df_escenarios[i, ] <- NA # Si no hay escenarios, llenar con NA
}
}
# Imprimir el dataframe
print(df_escenarios)
但尝试是空的
Object 1 Object 2 Object 3
1 NA NA NA
2 NA NA NA
3 NA NA NA
4 NA NA NA
5 NA NA NA
6 NA NA NA
7 NA NA NA
8 NA NA NA
9 NA NA NA
10 NA NA NA
11 NA NA NA
12 NA NA NA
提前感谢您的帮助
使用 dplyr::mutate: 的一种解决方案
mutate(experiment,
row=rep(1:12, each=3),
group=rep(1:3, 12),
Object=paste(flavor, price, container, topping), .keep="none") %>%
group_by(group) %>%
pivot_wider(names_from="group",
values_from="Object",
names_prefix="Object")
___
# A tibble: 12 × 4
row Object1 Object2 Object3
<int> <chr> <chr> <chr>
1 1 chocolate $1.50 cone yes vanilla $1.50 cone yes strawberry $1.50 cone yes
2 2 chocolate $2.00 cone yes vanilla $2.00 cone yes strawberry $2.00 cone yes
3 3 chocolate $2.50 cone yes vanilla $2.50 cone yes strawberry $2.50 cone yes
4 4 chocolate $1.50 cup yes vanilla $1.50 cup yes strawberry $1.50 cup yes
5 5 chocolate $2.00 cup yes vanilla $2.00 cup yes strawberry $2.00 cup yes
6 6 chocolate $2.50 cup yes vanilla $2.50 cup yes strawberry $2.50 cup yes
7 7 chocolate $1.50 cone no vanilla $1.50 cone no strawberry $1.50 cone no
8 8 chocolate $2.00 cone no vanilla $2.00 cone no strawberry $2.00 cone no
9 9 chocolate $2.50 cone no vanilla $2.50 cone no strawberry $2.50 cone no
10 10 chocolate $1.50 cup no vanilla $1.50 cup no strawberry $1.50 cup no
11 11 chocolate $2.00 cup no vanilla $2.00 cup no strawberry $2.00 cup no
12 12 chocolate $2.50 cup no vanilla $2.50 cup no strawberry $2.50 cup no