2017-05-05 67 views
0

我有一個列表變量X,我想根據X的元素和長度將新的分類變量添加到數據集中。例如,假設添加一個新變量到基於列表元素的數據集中

X  
    [[1]] 
    [[1]]$In 
    [1] 3 4 5 6 

    [[2]] 
    [[2]]$In 
    [1] 7 8 9 

    [[3]] 
    [[3]]$In 
    [1] 11 12 13 
library(stats) 
library(graphics) 
attach(cars) 
cars$c<-NA 

現在,我想在一個方式分類變量(c)由於數據集的行號或主題號這等於3,4,5,C是1,對於該行等於7,8,9,那麼c將是2,如果數據集的行號等於11,12,13,那麼c將是3.我想知道我該怎麼做。我需要一個循環函數,因爲在我的真實數據中,X的長度可能在20左右。這意味着c將有20個類別,並且一些單元格會是NA。我需要這樣的東西

In c 
3 1 
4 1 
5 1 
6 1 
7 2 
8 2 
9 2 
11 3 
12 3 
13 3 

然後我需要到C柱添加到汽車的數據集(即R中提供),如果在的值匹配與行號,然後我們會將c的值,否則C將是NA。

回答

0
df <- data.frame("In" = unlist(X), "c" = rep(seq_len(length(X)), sapply(X, lengths))) 

這構建了一個data.frame。第一個函數unlist將嵌套列表變成自動向量。第二個元素通過內部列表元素中的矢量中包含的元素的數量重複嵌套列表的元素位置。

df 
    In c 
1 3 1 
2 4 1 
3 5 1 
4 7 2 
5 8 2 
6 9 2 
7 11 3 
8 12 3 
9 13 3 

數據

X <- list(list("In"=3:5), list("In"=7:9), list("In"=11:13)) 
相關問題