簡體   English   中英

將每個向量的唯一元素保存在向量列表中

[英]Keep unique elements of each vector in a list of vectors

我有一個 dataframe 有 160 萬行,其中一列是字符向量列表。

此列表列的每個元素如下所示: c("A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61Q", "B05B")

我希望它是c("A61K","A61Q","B05B")

意思是我只想保留獨特的價值。 應對每一行重復此過程。

我試過這個:

sapply(strsplit(try, "|", function(x) paste0(unique(x), collapse = ",")))

和使用 for 循環的解決方案,但它需要很長時間並且 R 停止運行。

使用unique

> string <- c("A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61Q", "B05B")
> unique(string)
[1] "A61K" "A61Q" "B05B"

您可以在lapply()中使用unique()處理它:

# example df with list column
dat <- data.frame(id = 1:2)
dat$x <- list(
  c("A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61Q", "B05B"),
  c("A62K", "A61K", "A61K", "A58J", "A61K", "A61K", "A61K", "A61K", "A61K", "A61K", "A61Q", "C97B")
)

dat 
  id                                                                      x
1  1 A61K, A61K, A61K, A61K, A61K, A61K, A61K, A61K, A61K, A61K, A61Q, B05B
2  2 A62K, A61K, A61K, A58J, A61K, A61K, A61K, A61K, A61K, A61K, A61Q, C97B
# remove duplicates within list column by row
dat$x <- lapply(dat$x, unique)

dat
  id                            x
1  1             A61K, A61Q, B05B
2  2 A62K, A61K, A58J, A61Q, C97B

要過濾數據框,請使用duplicated

如果這是你的數據

df
    str data
1  A61K    1
2  A61K   23
3  A61K    4
4  A61K    3
5  A61K    1
6  A61K   23
7  A61K    4
8  A61K    3
9  A61K    1
10 A61K   23
11 A61Q    4
12 B05B    3

使用所需的列應用過濾器

df[!duplicated(df$str), ]
    str data
1  A61K    1
11 A61Q    4
12 B05B    3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM