根据 R 中其他列中的值添加更多列
add more multiple columns based on value in other columns in R
我有一个数据table,其中包含三个变量:
- 小时:格式为int,取值范围[0,23],自增
- mins:格式为int,值为(10,20,30,40,50,60),也增加了
- x: 格式为整数
下面是一个简单的示例:
stocks <- data.frame(
hours = c(0,0,0,0,0,0),
mins = c(10,10,10,20,20,30),
x = c(2,4,4,5,3,4)
)
输出:
基于此table,我想根据小时和分钟添加更多的多列。它看起来像下面这样:
0_10 0_20 0_30
2 5 4
4 3
4
我尝试使用 dcast 函数,但最终 table 只是计算 X 的频率 :(
library(data.table)
dcast(setDT(stocks), x ~ hours+mins, value.var = c("x"))
#Aggregate function missing, defaulting to 'length'
x 0_10 0_20 0_30
1: 2 1 0 0
2: 3 0 1 0
3: 4 2 0 1
4: 5 0 1 0
有什么建议吗?
谢谢!
我们需要更改 dcast
中的公式
library(data.table)#1.9.7+
dcast(setDT(stocks), rowid(hours, mins)~hours+mins, value.var = "x")[, hours := NULL][]
# 0_10 0_20 0_30
#1: 2 5 4
#2: 4 3 NA
#3: 4 NA NA
对于版本 < 1.9.7,我们创建按 'hours'、'mins' 分组的序列变量,然后执行 dcast
setDT(stocks)[, Seq := 1:.N, by = .(hours, mins)]
dcast(stocks, Seq~hours + mins, value.var = "x")[, Seq := NULL][]
我有一个数据table,其中包含三个变量:
- 小时:格式为int,取值范围[0,23],自增
- mins:格式为int,值为(10,20,30,40,50,60),也增加了
- x: 格式为整数
下面是一个简单的示例:
stocks <- data.frame(
hours = c(0,0,0,0,0,0),
mins = c(10,10,10,20,20,30),
x = c(2,4,4,5,3,4)
)
输出:
基于此table,我想根据小时和分钟添加更多的多列。它看起来像下面这样:
0_10 0_20 0_30
2 5 4
4 3
4
我尝试使用 dcast 函数,但最终 table 只是计算 X 的频率 :(
library(data.table)
dcast(setDT(stocks), x ~ hours+mins, value.var = c("x"))
#Aggregate function missing, defaulting to 'length'
x 0_10 0_20 0_30
1: 2 1 0 0
2: 3 0 1 0
3: 4 2 0 1
4: 5 0 1 0
有什么建议吗?
谢谢!
我们需要更改 dcast
library(data.table)#1.9.7+
dcast(setDT(stocks), rowid(hours, mins)~hours+mins, value.var = "x")[, hours := NULL][]
# 0_10 0_20 0_30
#1: 2 5 4
#2: 4 3 NA
#3: 4 NA NA
对于版本 < 1.9.7,我们创建按 'hours'、'mins' 分组的序列变量,然后执行 dcast
setDT(stocks)[, Seq := 1:.N, by = .(hours, mins)]
dcast(stocks, Seq~hours + mins, value.var = "x")[, Seq := NULL][]