data.table 相关问题

R data.table包是为快速内存数据分析而构建的data.frame的扩展。使用带有Shiny(DT)的DataTables包的dt标签。

在之前合并的 data.tables 中分配新列后,.internal.selfref 无效

合并两个 data.tables 并尝试为任何对象分配新列时,出现以下错误: 通过获取 data.table 的(浅)副本检测到并修复了无效的 .internal.selfref...

回答 1 投票 0

data.table错误:数据没有存储到初始数据表中

这是我的代码: 交易_DT[, { # 识别Unique_ID不为空且不NA的行 有效行 <- which(Unique_ID != "" | !is.na(Unique_ID)) # Only process if there are

回答 1 投票 0

R data.table 测试列中的值是否在列表列中

假设我有以下data.table dx <- data.table(x=c(1,2,3),tet=list(c(1,2,3),c(4,5),c(3))) x tet 1: 1 1,2,3 2: 2 4,5 3: 3 3 I wanna create a variable test that checks whether

回答 1 投票 0

根据后续变量更改变量

我想重新格式化我的数据,以便如果一个人在呈阳性后又进行了阴性测试,则该阳性测试将更改为阴性(被视为假阳性)。 在我的数据集中a

回答 1 投票 0

如何让 %like% 运算符不区分大小写

有没有办法让数据表包中的 %like% 运算符不区分大小写?因此,例如 'hello' %like% 'HELlo' 会匹配。

回答 2 投票 0

使用 data.table 将长字符串解析为单独的行失败

我有一个数据集,其中包含一列,其中有单独的条目作为字符串(原始oracle数据库中的CLOB)。使用 tidyverse 方法,strsplit、unnest 和 str_extract 工作得很好......

回答 2 投票 0

在数据表中,基于其他几个列,将某些值替换为同一列中的其他值,无需循环

我有一个很大的数据表,其中一部分如下所示(有更多列和数千行): stop_id 路径已更改_事件_状态已更改_时间 我有一个很大的数据表,其中一部分看起来像这样(有更多的列和数千行): stop_id path changed_event_status changed_time <i64> <char> <char> <i64> 1: 4398037956893976209 S <NA> 2405071040 2: 1500925206899141237 RT <NA> 2405071041 3: 2333532852925690131 S <NA> 2405071105 4: 4636036529075799544 TÜ <NA> 2405071044 5: 4680830034956468939 S <NA> 2405071046 6: 7584560746915960683 S c 2405071049 <- 1a: replace 2405071049 7: 2333532852925690131 RT <NA> 2405071116 8: 4747322524233582527 S <NA> 2405071100 <- 1b: with 2405071100 9: 285273127640529713 S <NA> 2405071103 10: 6134967434625106066 S <NA> 2405071101 11: 3684003552999415659 RT <NA> 2405071103 <- 2b: with 2405071103 12: 7584560746915960683 RT c 2405071058 <- 2a: replace 2405071058 13: 4680830034956468939 TÜ <NA> 2405071103 14: 8123621717351038368 S <NA> 2405071113 15: 8702942397103782624 TÜ <NA> 2405071114 16: 6134967434625106066 TÜ <NA> 2405071114 17: 4138386908727054325 S <NA> 2405071115 18: 285273127640529713 RT <NA> 2405071123 19: 2445758245483744446 S <NA> 2405071119 20: 8153934371487726263 TÜ <NA> 2405071132 21: 4138386908727054325 RT <NA> 2405071126 22: 310332233182112225 S <NA> 2405071127 stop_id path changed_event_status changed_time 对于其中 changed_event_status == c 的每一行,在具有相同 path 的所有行中,我需要找到 changed_time 列中等于或大于当前行中的最小值。例如,我需要将第 6 行中的 2405071049 替换为第 8 行中的 2405071100,将第 12 行中的 2405071058 替换为第 11 行中的 2405071103。 我可以使用 foreach() 循环来做到这一点,按 path 子集,按 changed_time 排序,然后找到等于或大于当前行的第一个值,但我想知道是否有更快的解决方案,而无需循环。 我查看了一些相关问题,但发现自己无法将它们适应我的具体情况。 样本数据: library(data.table) bahn <- fread(" stop_id path changed_event_status changed_time 4398037956893976209 S NA 2405071040 1500925206899141237 RT NA 2405071041 2333532852925690131 S NA 2405071105 4636036529075799544 TÜ NA 2405071044 4680830034956468939 S NA 2405071046 7584560746915960683 S c 2405071049 2333532852925690131 RT NA 2405071116 4747322524233582527 S NA 2405071100 285273127640529713 S NA 2405071103 6134967434625106066 S NA 2405071101 3684003552999415659 RT NA 2405071103 7584560746915960683 RT c 2405071058 4680830034956468939 TÜ NA 2405071103 8123621717351038368 S NA 2405071113 8702942397103782624 TÜ NA 2405071114 6134967434625106066 TÜ NA 2405071114 4138386908727054325 S NA 2405071115 285273127640529713 RT NA 2405071123 2445758245483744446 S NA 2405071119 8153934371487726263 TÜ NA 2405071132 4138386908727054325 RT NA 2405071126 310332233182112225 S NA 2405071127 ") 循环解法: for(i in 1:nrow(bahn)) { if(!is.na(bahn[i, changed_event_status]) & bahn[i, changed_event_status] == "c") { bahn[i, ]$changed_time <- sort( bahn[ is.na(changed_event_status) & changed_time >= bahn[i, changed_time] & path == bahn[i, path] ]$changed_time )[1] } } 如果您不介意重新排列表格: setorder(bahn, path, changed_time, -changed_event_status)[ changed_event_status == "c", changed_time := NA ] setnafill(bahn, "nocb", cols = "changed_time") bahn #> Index: <changed_event_status> #> stop_id path changed_event_status changed_time #> <i64> <char> <char> <i64> #> 1: 1500925206899141237 RT <NA> 2405071041 #> 2: 7584560746915960683 RT c 2405071103 #> 3: 3684003552999415659 RT <NA> 2405071103 #> 4: 2333532852925690131 RT <NA> 2405071116 #> 5: 285273127640529713 RT <NA> 2405071123 #> 6: 4138386908727054325 RT <NA> 2405071126 #> 7: 4398037956893976209 S <NA> 2405071040 #> 8: 4680830034956468939 S <NA> 2405071046 #> 9: 7584560746915960683 S c 2405071100 #> 10: 4747322524233582527 S <NA> 2405071100 #> 11: 6134967434625106066 S <NA> 2405071101 #> 12: 285273127640529713 S <NA> 2405071103 #> 13: 2333532852925690131 S <NA> 2405071105 #> 14: 8123621717351038368 S <NA> 2405071113 #> 15: 4138386908727054325 S <NA> 2405071115 #> 16: 2445758245483744446 S <NA> 2405071119 #> 17: 310332233182112225 S <NA> 2405071127 #> 18: 4636036529075799544 TÜ <NA> 2405071044 #> 19: 4680830034956468939 TÜ <NA> 2405071103 #> 20: 8702942397103782624 TÜ <NA> 2405071114 #> 21: 6134967434625106066 TÜ <NA> 2405071114 #> 22: 8153934371487726263 TÜ <NA> 2405071132 #> stop_id path changed_event_status changed_time

回答 1 投票 0

使用 NA 值创建指数移动平均线时出错

我正在尝试创建指数移动平均线。然而,似乎没有一个函数能够以完全相同的方式处理 NA 值。所以我从处理 NA 的人那里找到了解决方案...

回答 1 投票 0

如何用另一个数据表中的值替换 data.table 中的 NA 值

我有两个数据表。其中一个有一些 NA 值,我想将其替换为第二个 data.table 的同一位置(行/列)的值。 我可以分别为每一列做这件事。有没有...

回答 1 投票 0

根据最近日期更新非缺失值[重复]

我的数据对每个 ID 有多个观察值。在 ID 级别,我想将所有值转换为最新的非缺失值。我尝试过使用 mutate、group_by(id) 和 which.max(year)

回答 1 投票 0

使用 data.table 中的列名称选择多个范围的列

假设我有一个数据表, dt = data.table(矩阵(1:50, nrow = 5)); colnames(dt) = 字母[1:10]; > DT abcdefghij 1:1 6 11 16 21 26 31 36 41 46 2:2 7 12 17 22 27 32 ...

回答 3 投票 0

在R中安装data.table库:zlib.h没有这样的文件或目录

我想在R中安装data.table库,但是我遇到了问题。 当我打字时 install.packages(“数据.表”) 它告诉我必须从源代码编译该库。如果我说是,我的 C

回答 1 投票 0

如何使用文本表达式对数据进行子集化

假设我读取了一些包含要在数据集中进行的操作的文件,作为示例 库(数据.表) dt = setDT(mtcars) exp1 =“气缸 == 8 & mpg > 16” exp2 = "圆柱== 6 &...

回答 1 投票 0

如何重命名 data.frames 列表中的重复变量?

我想使用map2重命名列表中包含的数据表的几个重复的变量名称“NA.”,以便列名称不重复。这个问题已被问过(重命名失败

回答 1 投票 0

data.table 和 dplyr 兼容性

当我同时使用 data.table 和 dplyr 时,我遇到了一些奇怪的错误。 我有的包是: 数据表:'1.12.2' dplyr: '0.8.3' 如果我回滚到旧版本,则不会发生错误。如果我只使用 dplyr...

回答 0 投票 0

按组将 R 数据框中的值向上移动

我在 R 中有一个数据框,我需要使用数值将特定列中的值向上移动。用作输入以向上移动值的数值与组关联...

回答 1 投票 0

当数据未通过 R 函数中的某些检查时将数据分配给列表

我正在使用一些测试数据在 R 中创建一个函数,该函数将循环遍历 data.table 并检查每一列是否符合特定条件。该函数应根据已知的列对列进行分组...

回答 1 投票 0

用非 NA 值替换前一列中的先前 NA,同时保留后面列中出现的 NA

在 data.table 中,我想用最接近的先前非 NA 值向前填充先前的 NA,类似于这篇文章 但是,我想保留非 NA 值之后出现的任何 NA。那个。

回答 2 投票 0

用最新的非 NA 值替换先前的 NA,同时保留后续的 NA

在 data.table 中,我想用最接近的先前非 NA 值向前填充先前的 NA,类似于这篇文章 但是,我想保留非 NA 值之后出现的任何 NA。那个。

回答 1 投票 0

R data.table 在多个同名列中按列名选择特定列

尝试通过列名选择特定的DT列,但该DT有多个同名列: DT = data.table(a=1:3, a=4:6, a=7:9, b=10:12, a=13:15) > DT 甲乙乙 1: 1 4 7 10 1...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.