2016-10-15 42 views
0

我有一個數據幀像這樣的一列:複製功能產生的一大因素

col1 
line1 
line1 
line2 

我嘗試使用這個刪除重複:

df2 <- df[!duplicated(df), ] 

,但它產生的一大因素,而不是刪除重複。的結構類似,結果是這樣的:

str(df2) 
Factor w/ 7472 levels 
+0

歡迎堆棧溢出!我們要求您提供涉及故障診斷代碼的問題,以提供可重現的示例。你可以使用'dput()'來共享數據。 –

回答

2

當你只有一列,你需要使用drop = FALSE得到一個數據幀回:

df2 <- df[!duplicated(df), , drop = FALSE] 

另一種選擇是使用unique功能:

df2 <- unique(df) 

兩種方法的結果是相同的:

> df2 
    col1 
1 line1 
3 line2 
+0

除了只有1列(並且如果只有1列爲什麼需要data.frame?),您不需要刪除。 –

+0

'drop = FALSE'確實只在數據框中有一列時才需要(這是OP描述的情況) – h3rm4n

0
col1 <- c("line1", 
      "line1", 
      "line2") 

df <- data.frame(col1=col1, x=c(1,2,3)) 

df1 <- df[!duplicated(df$col1),] 
df1 
col1 x 
1 line1 1 
3 line2 3 
class(df1) 

[1] 「data.frame」

+0

這不會返回一個數據幀,這是OP要我理解的內容 – h3rm4n

+0

@ h3rm4n它返回一個data.frame當有多個列時。如果有1列,你不應該使用data.frame。 –

+0

是的,但OP只有一列 – h3rm4n