2017-02-24 55 views
1

我有一個csv的數據如下,其中上部是一些元數據,下面是數據框。將起始行作爲變量追加到數據框中

> dput(sampledata2) 
structure(list(X1 = c("Name", "ID1", "ID2", "Date", NA, "Var1", 
"1", "2", "3"), X2 = c("some name", "1", "2", "24-02-2017", NA, 
"Var2", "2", "3", "4"), X3 = c(NA, NA, NA, NA, NA, "Var3", "3", 
"4", "5"), X4 = c(NA, NA, NA, NA, NA, "Var4", "4", "5", "6"), 
    X5 = c(NA, NA, NA, NA, NA, "Var5", "5", "6", "7")), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -9L), .Names = c("X1", 
"X2", "X3", "X4", "X5"), spec = structure(list(cols = structure(list(
    X1 = structure(list(), class = c("collector_character", "collector" 
    )), X2 = structure(list(), class = c("collector_character", 
    "collector")), X3 = structure(list(), class = c("collector_character", 
    "collector")), X4 = structure(list(), class = c("collector_character", 
    "collector")), X5 = structure(list(), class = c("collector_character", 
    "collector"))), .Names = c("X1", "X2", "X3", "X4", "X5")), 
    default = structure(list(), class = c("collector_guess", 
    "collector"))), .Names = c("cols", "default"), class = "col_spec")) 

現在,我期待包括元數據作爲數據的變量像下面

> sampledata 
# A tibble: 3 × 9 
    Var1 Var2 Var3 Var4 Var5  Name ID1 ID2  Date 
    <int> <int> <int> <int> <int>  <chr> <int> <int>  <chr> 
1  1  2  3  4  5 some name  1  2 24-02-2017 
2  2  3  4  5  6 some name  1  2 24-02-2017 
3  3  4  5  6  7 some name  1  2 24-02-2017 
+1

可你'dput'設置你的數據? 'dput(sampledata)'將使其具有重現性 – Sotos

+0

@Sotos更新! –

+0

哇......非常怪異的結構。你是如何設法得到它的? – Sotos

回答

4

正如@Sotos說:奇怪的數據結構!但是,您可以按如下修正:

sampledata <- as.data.frame(sampledata) # needed to prevent unwanted behavior from 'tbl_df'-class 

d1 <- sampledata[7:9,] 
names(d1) <- unlist(sampledata[6,]) 
d1 

d2 <- as.data.frame(t(sampledata[1:4,2])) 
names(d2) <- sampledata[1:4,1] 
d2 

res <- cbind(d1,d2) 

這給:

> res 
    Var1 Var2 Var3 Var4 Var5  Name ID1 ID2  Date 
1 1 2 3 4 5 some name 1 2 24-02-2017 
2 2 3 4 5 6 some name 1 2 24-02-2017 
3 3 4 5 6 7 some name 1 2 24-02-2017 
+0

這正是我正在尋找的!謝謝 –