[英]Excel: Merging Repeating Columns Within A Dataset
原諒最基本的問題。 根據條件,我有一個實驗的輸出,該輸出具有相同問題的3個不同版本。 輸出文件將每個問題視為一個單獨的列,因此我的輸出如下所示,其中各列的標題重復:
Q1,Q2,Q3,Q1,Q2,Q3,Q1,Q2,Q3
1, 0, 1
-----------0, 1, 0
--------------------1, 1, 1
我將如何合並輸出(最好在Excel中-我的輸出當前存儲在excel文件中,或者存儲在R中),以便所需的輸出如下所示:
Q1,Q2,Q3
1, 0, 1
0, 1, 0
1, 1, 1
提前致謝!
使用讀取excel文件的函數讀取數據集后, R
一個選項(讀取read_excel
等)將是遍歷數據集的unique
names
,提取列, unlist
,刪除NA
元素(如果有的話-假設空白為NA
)
nm1 <- unique(sub("\\.\\d+", "", names(df1)))
out <- sapply(nm1, function(x) na.omit(unlist(df1[grep(x, names(df1))])))
row.names(out) <- NULL
out
# Q1 Q2 Q3
#[1,] 1 0 1
#[2,] 0 1 0
#[3,] 1 1 1
或與tidyverse
進行gather/spread
library(tidyverse)
gather(df1, na.rm = TRUE) %>%
mutate(key = str_remove(key, "\\.\\d+$"), ind = rowid(key)) %>%
spread(key, value) %>%
select(-ind)
# Q1 Q2 Q3
#1 1 0 1
#2 0 1 0
#3 1 1 1
或另一種選擇是split
成一個list
具有類似列data.frames的,使用coalesce
,以reduce
它的單個載體,其將消除NA
的行中的元素和在該行中得到第一非NA元件
split.default(df1, nm1) %>%
map_df(reduce, coalesce)
# A tibble: 3 x 3
# Q1 Q2 Q3
# <dbl> <dbl> <dbl>
#1 1 0 1
#2 0 1 0
#3 1 1 1
df1 <- structure(list(Q1 = c(1, NA, NA), Q2 = c(0, NA, NA), Q3 = c(1,
NA, NA), Q1.1 = c(NA, 0, NA), Q2.1 = c(NA, 1, NA), Q3.1 = c(NA,
0, NA), Q1.2 = c(NA, NA, 1), Q2.2 = c(NA, NA, 1), Q3.2 = c(NA,
NA, 1)), class = "data.frame", row.names = c(NA, -3L))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.