gpt4 book ai didi

r - 编辑数据框中的列

转载 作者:行者123 更新时间:2023-12-02 08:21:11 25 4
gpt4 key购买 nike

我正在尝试在我尝试使用 tstrsplit 的数据框中编辑我的列,但我没有得到想要的结果。我正在尝试从 OID 中删除 ';' 并且我希望 OID 列中的每一行都有一个值。

下面是我的代码

library(data.table);
setDT(df)[, paste0("OID", 1:3) := tstrsplit(OID, ";", fixed = TRUE)]

执行这段代码它创建了 3 个不同的列 OID1 OID2 OID3 但我只需要编辑列 OID 并且其中有单个值已显示在我想要的输出中。

下面是我的数据-->

   QID           OID
189 204;202;201;203;
189 202;203;201;204;
189 na
189 204;202;201;203;
189 na
189 204;202;201;203;
189 na

下面是我想要的输出-->

QID       OID
189 202
189 201
189 204
189 203

最佳答案

如果我们需要每行中的单个元素,我们可以将“OID”拆分为;,使用sapply循环遍历list输出>,使用(示例 - 因为规则不明确)获取单个元素,并使用该输出更新“OID”。

transform(df, OID = sapply(strsplit(OID, ";"), sample, 1))
# QID OID
#1 189 202
#2 189 204
#3 189 203
#4 189 202

如果我们需要每行唯一

transform(df, OID = sample(unique(unlist(strsplit(OID, ";")))))
# QID OID
#1 189 202
#2 189 201
#3 189 203
#4 189 204

注意:如果“OID”列类是factor,在拆分之前转换为character类,即strsplit(as.character(OID), "; ")

数据

df <- structure(list(QID = c(189L, 189L, 189L, 189L),
OID = c("204;202;201;203;",
"202;203;201;204;", "204;202;201;203;", "204;202;201;203;")),
.Names = c("QID", "OID"), class = "data.frame", row.names = c(NA, -4L))

关于r - 编辑数据框中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36997748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com