我正在关注一个博客帖子here,关于从Python熊猫到R的翻译,我在一部分上有些停留。
在博客部分:
作者所在行:
data_tick_grp = data.reset_index().assign(grpId=lambda row: row.index // num_ticks_per_bar)
data
是“数据框”-reset_index
不确定这是什么。assing(grpId =…)
-创建一个新变量grpId
lambda row:
-不确定这样做是什么。row.index
-与row_number
一样吗?\\
-与R中的floor()
相同吗? num_ticks_per_bar
的计算方式如下。
total_ticks = len(data)
num_ticks_per_bar = total_ticks / num_time_bars
num_ticks_per_bar = round(num_ticks_per_bar, -3) # round to the nearest thousand
我理解为:
ticks <- data %>%
filter(symbol == "XBTUSD") %>%
nrow()
ticks_per_bar <- ticks / 288
ticks_per_bar <- plyr::round_any(ticks_per_bar, 1000)
floor(1:nrow(data) / ticks_per_bar))
有人可以帮我将Python熊猫行翻译成R语言吗?
答案 0 :(得分:2)
通常,Pandas最好翻译成基数R:
reset_index
与将row.names
重置为连续编号data.frame(..., row.names = NULL)
assign(grpId =…)
与在适当位置分配一列相同,例如使用transform
,within
或dplyr的mutate
lambda row
,这在assign
内部是必需的,以引用数据框,这里别名为 row
row.index
与行号相同(记住Python与R不同,它是0索引)
//
是整数除法,在R中,除法后可以用as.integer
或floor
包装
总的来说,请考虑以下调整以翻译熊猫线:
data_tick_grp = (data.reset_index()
.assign(grpId=lambda row: row.index // num_ticks_per_bar)
)
致R:
data_tick_grp <- transform(data.frame(data, row.names = NULL),
grpId = floor(0:(nrow(data)-1) / num_ticks_per_bar))
或整齐的格式:
data_tick_grp <- data %>%
data.frame(row.names = NULL) %>%
mutate(grpId = floor(0:(nrow(data)-1) / num_ticks_per_bar))