如何使用 dbplyr (R) 在后端将向量添加到 table
How to add a vector to a table in backend using dbplyr (R)
我使用 tbl()
从数据源创建了一个 table。我需要在我的数据集中添加一个包含 1:nrow()
的列,并尝试了不同的方法但我没有成功。我的代码如下:
nrow_df1 <- df1 %>% summarise(n = n()) %>% pull(n)
df1 <- df1 %>% mutate(ID = 1:nrow_df1, step = 1)
它不会将列 ID 添加到我的数据集中,只会添加列步骤。
使用 as.data.frame()
,它工作但很慢。
你有什么想法吗?提前致谢
对于这种情况,您可以使用 row_number()
。
library(dbplyr)
library(DBI)
# simulate a fake database
con <- dbConnect(RSQLite::SQLite(), ":memory:")
dbWriteTable(con, "mtcars", mtcars)
# add in the row
tbl(con, "mtcars") %>%
mutate(ID = row_number())
dbDisconnect(con)
我找到了答案。就是用row_number()
但是还需要as.numeric
把integer64 的输出转成numeric:
df1 <- df1 %>% mutate(ID = as.numeric(row_number(a column)), step = 1)
我使用 tbl()
从数据源创建了一个 table。我需要在我的数据集中添加一个包含 1:nrow()
的列,并尝试了不同的方法但我没有成功。我的代码如下:
nrow_df1 <- df1 %>% summarise(n = n()) %>% pull(n)
df1 <- df1 %>% mutate(ID = 1:nrow_df1, step = 1)
它不会将列 ID 添加到我的数据集中,只会添加列步骤。
使用 as.data.frame()
,它工作但很慢。
你有什么想法吗?提前致谢
对于这种情况,您可以使用 row_number()
。
library(dbplyr)
library(DBI)
# simulate a fake database
con <- dbConnect(RSQLite::SQLite(), ":memory:")
dbWriteTable(con, "mtcars", mtcars)
# add in the row
tbl(con, "mtcars") %>%
mutate(ID = row_number())
dbDisconnect(con)
我找到了答案。就是用row_number()
但是还需要as.numeric
把integer64 的输出转成numeric:
df1 <- df1 %>% mutate(ID = as.numeric(row_number(a column)), step = 1)