使用列值作为列名来创建交叉表
Use column value as column name to create a cross-tab
我有一个很长的 table 行组,看起来像这样。本质上,我想使用 v1
中存储的值来重命名 v1_hasvalue
,同样地 v2
.
v1 <- rep(c("varA"), 4)
v2 <- rep(c("varB"), 4)
v1_hasvalue <- c(1,1,0,0)
v2_hasvalue <- c(1,0,1,0)
n <- c(100, 20, 30, 40)
have <- data.frame(v1, v2, v1_hasvalue, v2_hasvalue, n)
我该怎么做:
v1 v2 v1_hasvalue v2_hasvalue n
1 A B 1 1 100
2 A B 1 0 20
3 A B 0 1 30
4 A B 0 0 40
对此:
varA varB n
1 1 1 100
2 1 0 20
3 0 1 30
4 0 0 40
我们可以将列重命名为
names(have)[3:4] <- unlist(have[1, 1:2])
have <- have[-(1:2)]
-输出
> have
varA varB n
1 1 1 100
2 1 0 20
3 0 1 30
4 0 0 40
我有一个很长的 table 行组,看起来像这样。本质上,我想使用 v1
中存储的值来重命名 v1_hasvalue
,同样地 v2
.
v1 <- rep(c("varA"), 4)
v2 <- rep(c("varB"), 4)
v1_hasvalue <- c(1,1,0,0)
v2_hasvalue <- c(1,0,1,0)
n <- c(100, 20, 30, 40)
have <- data.frame(v1, v2, v1_hasvalue, v2_hasvalue, n)
我该怎么做:
v1 v2 v1_hasvalue v2_hasvalue n
1 A B 1 1 100
2 A B 1 0 20
3 A B 0 1 30
4 A B 0 0 40
对此:
varA varB n
1 1 1 100
2 1 0 20
3 0 1 30
4 0 0 40
我们可以将列重命名为
names(have)[3:4] <- unlist(have[1, 1:2])
have <- have[-(1:2)]
-输出
> have
varA varB n
1 1 1 100
2 1 0 20
3 0 1 30
4 0 0 40