r - 重复多个列元素可变次数
问题描述
我有一个看起来像这样的数据框:
test <- data.frame(k = 0:5, A = sample(6), B = sample(6), C = sample(6))
k A B C
0 4 5 0
1 2 3 8
2 3 2 2
3 0 0 0
4 1 0 2
我正在尝试重复、 和指定的次数的每个元素A
,然后将新向量存储在一个新的数据框中,如下所示:B
C
k
A B C
0 0 1
0 0 1
0 0 1
0 0 1
1 0 1
1 1 1
2 1 1
等等...
解决方案
你可以很容易地用data.table
包做到这一点。
test <- data.frame(k = 0:5, A = sample(6), B = sample(6), C = sample(6))
library(data.table)
setDT(test)
test[, sapply(.SD, function(x) rep(k, x)), .SDcols = colnames(test)[-1]]
在这里您执行函数function(x) rep(k, x)
,其中x
是A:C
( .SDcols = colnames(test)[-1]
) 列。
结果:
A B C
[1,] 0 0 0
[2,] 0 0 0
[3,] 0 1 1
[4,] 0 1 1
[5,] 0 1 1
[6,] 0 1 1
[7,] 1 1 1
[8,] 1 2 1
[9,] 2 3 2
[10,] 3 3 3
[11,] 3 3 3
[12,] 3 4 3
[13,] 4 4 4
[14,] 4 4 4
[15,] 4 4 4
[16,] 4 4 4
[17,] 5 4 5
[18,] 5 5 5
[19,] 5 5 5
[20,] 5 5 5
[21,] 5 5 5
推荐阅读
- java - Java:两个并行列格式
- arduino - Arduino如何检测一个键是否被按下
- c# - Azure 聊天机器人中间件的依赖注入?
- php - Laravel Eloquent orderBy() 一对多关系中的父表字段
- windows - 在 Linux 的 Windows 子系统(Windows 上的 Ubuntu 上的 WSL / Bash)中,如何将颜色重置为默认/原始方案?
- java - 为什么我的地图活动导致我的应用程序崩溃?
- android - 由于只读文件系统,无法在 Android 中打开与 JDBC SQLite 数据库的连接
- spring - @RefreshScope 停止 @Scheduled 任务
- machine-learning - 使您的 SVM 更快、更可靠的最佳方法是什么?
- javascript - 检查 ISO 8601 日期是否早于 5 分钟