我正在尝试使用var group: IGroup = new Group();
在数据框内编辑我的列,但我没有得到所需的结果。我想从OID&中删除Group
我想在OID列的每一行中使用单个值。
这是我下面的代码
group
执行此代码时,它创建了3个不同的列OID1 OID2 OID3,但我只需要编辑列OID&其中有单个值显示在我想要的输出中。
以下是我的数据 - >
tstrsplit
我想要的输出我需要的是 - >
';'
答案 0 :(得分:4)
如果我们需要每行中的一个元素,我们可以将{OID'拆分为;
,使用list
循环遍历sapply
输出,使用({获取单个元素) {1}} - 因为规则不明确),并用该输出更新'OID'。
sample
如果我们每行需要transform(df, OID = sapply(strsplit(OID, ";"), sample, 1))
# QID OID
#1 189 202
#2 189 204
#3 189 203
#4 189 202
个值
unique
注意:如果“OID”列类为transform(df, OID = sample(unique(unlist(strsplit(OID, ";")))))
# QID OID
#1 189 202
#2 189 201
#3 189 203
#4 189 204
,请在拆分之前转换为factor
类,即character
strsplit(as.character(OID), ";")
答案 1 :(得分:2)
我认为另一个选择是使用库stringr::str_split_fixed
,它在字符串上进行矢量化,因此它应该比sapply更有效。
str_split_fixed(string, pattern, n)
请参见此处:http://www.inside-r.org/packages/cran/stringr/docs/str_split_fixed
df <- data.frame(QID=c(189,189,189,189),
OID=c("204;202;201;203","202;203;201;204",
"204;202;201;203","204;202;201;203"))
df
# QID OID
# 1 189 204;202;201;203
# 2 189 202;203;201;204
# 3 189 204;202;201;203
# 4 189 204;202;201;203
library(stringr)
df$OID = str_split_fixed(df$OID, ";",4)[,1] #get the first seperated column
df
# QID OID
#1 189 204
#2 189 202
#3 189 204
#4 189 204