r - 如何从 R 中的数值变量创建虚拟变量?
问题描述
如何从 R 中的数值变量创建虚拟变量?我想创建 N 个虚拟变量。以这种方式,数字变量表示将出现多少个零,从第一列开始计数。想象一下N = 6。像这样:
x
a 5
b 2
c 4
d 1
e 9
它必须变成:
1 2 3 4 5 6
a 0 0 0 0 0 1
b 0 0 1 1 1 1
c 0 0 0 0 1 1
d 0 1 1 1 1 1
e 0 0 0 0 0 0
谢谢!
解决方案
我们可以通过创建索引并根据索引将已创建的 1 分配给 0 以vectorize
d 方式执行此操作row/column
matrix
m1 <- matrix(1, ncol = N, nrow = length(x),
dimnames = list(letters[seq_along(x)], seq_len(N)))
x1 <- pmin(x, ncol(m1))
m1[cbind(rep(seq_len(nrow(m1)), x1), sequence(x1))] <- 0
m1
# 1 2 3 4 5 6
#a 0 0 0 0 0 1
#b 0 0 1 1 1 1
#c 0 0 0 0 1 1
#d 0 1 1 1 1 1
#e 0 0 0 0 0 0
数据
x <- c(5,2,4,1,9)
N <- 6
推荐阅读
- spring-cloud-dataflow - 如何在 Spring Cloud 数据流上使用自定义处理器?
- git - 我可以快进将整个分支链合并到 master 中吗?
- tensorflow - Tensorflow LSTM 中辍学的种子 - model(X) 和 model.predict(X) 的差异
- bootstrap-4 - 为什么列表组不占用列的全宽
- c - How do I fix these memory leaks in C?
- jquery - 如何根据页面(URL)选择选项?
- api - Asp.net core API method is called on fluent api validation failed
- c# - 为什么 LinkGenerator.GetUriByPage() "values" 参数在传入字符串时返回 string.Length?
- sorting - 通过查询仅检索唯一值
- python - How to use the predict() function for a GLMGam model with BSplines (statsmodel api Python)?