合并多个列,同时保持每个元素行分隔?

时间:2018-03-21 10:40:27

标签: r

我有以下数据框:

代码:

DF <- data.frame(lapply(data.frame(Col1 = c("test", "", "test3"),
                               Col2 = c("", "test2", ""),
                               Col3 = c("", "", "test4")), as.character), stringsAsFactors=FALSE)

输出的内容:

   Col1  Col2  Col3
1  test            
2       test2      
3 test3       test4

我想要做的是创建一个将3列合并在一起的新列。我有以下代码:

DF$Merged <- do.call(paste0, DF[c("Col1", "Col2", "Col3")])

这输出以下内容:

   Col1  Col2  Col3     Merged
1  test                   test
2       test2            test2
3 test3       test4 test3test4

这有点好用,因为我得到了一个名为“Merged”的专栏。但是,第3行出现问题,其中元素值为test3,test4合并在一起。我希望这两个元素在同一列(Merged)下,但不在同一个元素中。一个理想的解决方案是,如果R创建了一个额外的行并在那里放置它们,所以它最终会像这样:

   Col1  Col2  Col3 Merged
1  test              test1
2       test2        test2
3 test3       test4  test3
4                    test4

1 个答案:

答案 0 :(得分:1)

一个选项是将DatePickerDialog datePickerDialog =DatePickerDialog.newInstance(new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) { } }, persianCalendar.getPersianYear(), persianCalendar.getPersianMonth(), persianCalendar.getPersianDay()); 个元素组合在一起,然后与paste一起,将行拆分为“长”字样。通过在一个字母(separate_rows)之前在一个或多个空格(\\s+)处拆分来格式化,以基本上排除在数字之前的任何空格处的拆分,即测试3&#39;或者&#39;测试2&#39;

(?=[A-Za-z])

如果模式不清楚,那么我们创建library(tidyverse) DF %>% mutate(Merged = trimws(do.call(paste, .))) %>% separate_rows(Merged, sep="\\s+(?=[A-Za-z])") sep

paste