编辑数据框内的列

时间:2016-05-03 07:03:28

标签: r dataframe

我正在尝试使用var group: IGroup = new Group(); 在数据框内编辑我的列,但我没有得到所需的结果。我想从OID&中删除Group我想在OID列的每一行中使用单个值。

这是我下面的代码

group

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

以下是我的数据 - >

tstrsplit

我想要的输出我需要的是 - >

';'

2 个答案:

答案 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