如何通过创建空白空间使所有列的所有元素对齐,使其保持相同的模式

时间:2018-10-16 14:26:26

标签: r

我有一个时间数据集,但是它不完整,所以我不能准确地重建序列。这些是数据:

df<-data.frame(year=c(2006,2007,2008,2009,2010,2011,2012,2013,2014,2015),
sample1=c("D","D","DDD","D","U","UU","UUU","U","D","DDD"),
sample2=c("U","UU","D","D","DDD","D","U","UU","UUU","U"),
sample3=c("D","DDD","D","U","UU","UUU","U","D","DDD","D"),
sample4=c("D","D","UUU","U","D","DDD","D","U","U",NA),
sample5=c(NA,"UU","D","U","UU","UUU","U","D","U",NA))

我需要它最终像这样:

df2<-data.frame(year=c(2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,
2015,2016,2017,2018),
sample1=c(NA,NA,"D","D","DDD","D","U","UU","UUU","U","D","DDD",NA,NA,NA),
sample2=c("U","UU","D","D","DDD","D","U","UU","UUU","U",NA,NA,NA,NA,NA),
sample3=c(NA,NA,NA,"D","DDD","D","U","UU","UUU","U","D","DDD","D",NA,NA),
sample4=c(NA,NA,"D","D",NA,NA,NA,NA,"UUU","U","D","DDD","D","U","U"),
sample5=c(NA,"UU","D",NA,NA,NA,"U","UU","UUU","U",NA,NA,"D","U",NA))

我需要所有的列以相同的模式对齐,最好的结果是使用DNA对齐功能,但是这些时候要找到最佳的对齐方式来反转元素,在我的情况下不会发生这种情况。 我不知道该怎么做。

2 个答案:

答案 0 :(得分:0)

一旦初始数据帧存在,dplyr的add_row函数将使此操作变得非常容易。

library(dplyr)

df<-data.frame(year=c(2006,2007,2008,2009,2010,2011,2012,2013,2014,2015),
sample1 = c("D","D","DDD","D","U","UU","UUU","U","D","DDD"),
sample2 = c("U","UD","D","D","DDD","D","U","UU","UUU","U"),
sample3 = c("D","DDD","D","U","UU","UUU","U","D","DDD","D"),
sample4 = c("D","D","UUU","U","D","DDD","D","U","U",NA),
sample5 = c(NA,"UU","D","U","UU","UUU","U","D","U",NA))
df2 <- df %>%
  add_row(year = 2016:2018)

答案 1 :(得分:0)

$pattern = '"\b(http?://\S+)"';
$html_links = preg_replace($pattern, '$1&myvar', $text);

结果:

library(dplyr)

df <- data_frame(year=c(2006,2007,2008,2009,2010,2011,2012,2013,2014,2015),
               sample1=c("D","D","DDD","D","U","UU","UUU","U","D","DDD"),
               sample2=c("U","UD","D","D","DDD","D","U","UU","UUU","U"),
               sample3=c("D","DDD","D","U","UU","UUU","U","D","DDD","D"),
               sample4=c("D","D","UUU","U","D","DDD","D","U","U",NA),
               sample5=c(NA,"UU","D","U","UU","UUU","U","D","U",NA)) %>% 
  add_row(year = c(2004, 2005), .before = 1) %>% 
  add_row(year = c(2016:2018))