在数据框中添加字符串列(逐行)

时间:2017-06-09 19:28:27

标签: r

我有一个包含所有字符串列的数据框。偶尔也有NA个。我想逐行将所有列添加到一个向量中,以便我只能获得整个数据框中的唯一字符串。给出这样的样本数据:

        L1     L2    L3    L4
1      bed bicyle  <NA>  bird
2     <NA>   road   cat dance
3      cat   rock table   bed
4 mountain    bed clock  <NA>

然后我想要这样的事情:

                                                     Total
1 bed bicyle bird road cat dance rock table mountain clock

我显然可以通过循环执行此操作,但我正在尝试找出apply或plyr类型解决方案(更像是R - )。到目前为止,我可以得到一个数组列表,但我试图将这些数组加在一起。我的方法是否正确?任何帮助表示赞赏。

df <- data.frame(L1 = c("bed", NA, "cat", "mountain"), 
                 L2 = c("bicyle", "road", "rock", "bed"), 
                 L3 = c(NA, "cat", "table", "clock"), 
                 L4 = c("bird", "dance", "bed", NA))
df <- lapply(df, unique)

2 个答案:

答案 0 :(得分:4)

你可以这样做:

unique(as.vector(t(df)))

或者,whitout NAs

unique(na.omit(as.vector(t(df))))

答案 1 :(得分:2)

这是完成任务的一种方法:

<select [(ngModel)]="rec.selected" (change)="changeOption(rec)">...

输出:

require(dplyr)
df <- data.frame(L1 = c("bed", NA, "cat", "mountain"), 
                 L2 = c("bicyle", "road", "rock", "bed"), 
                 L3 = c(NA, "cat", "table", "clock"), 
                 L4 = c("bird", "dance", "bed", NA), 
                 stringsAsFactors = FALSE)

df <- df %>% unlist() %>% na.omit() %>% unique()