2017-09-13 40 views
0

这里是一个小例子的数据帧:创建从数据帧与长度(列表)的列表相同nrow(DF)

> dput(head(cluster_socrata_csv)) 
structure(list(Cluster = structure(c(1L, 13L, 24L, 35L, 46L, 
57L), .Label = c("cluster1", "cluster10", "cluster100", "cluster11", 
"cluster12", "cluster13", "cluster14", "cluster15", "cluster16", 
"cluster17", "cluster18", "cluster19", "cluster2", "cluster20", 
"cluster21", "cluster22", "cluster23", "cluster24", "cluster25", 
"cluster26", "cluster27", "cluster28", "cluster29", "cluster3", 
"cluster30", "cluster31", "cluster32", "cluster33", "cluster34", 
"cluster35", "cluster36", "cluster37", "cluster38", "cluster39", 
"cluster4", "cluster40", "cluster41", "cluster42", "cluster43", 
"cluster44", "cluster45", "cluster46", "cluster47", "cluster48", 
"cluster49", "cluster5", "cluster50", "cluster51", "cluster52", 
"cluster53", "cluster54", "cluster55", "cluster56", "cluster57", 
"cluster58", "cluster59", "cluster6", "cluster60", "cluster61", 
"cluster62", "cluster63", "cluster64", "cluster65", "cluster66", 
"cluster67", "cluster68", "cluster69", "cluster7", "cluster70", 
"cluster71", "cluster72", "cluster73", "cluster74", "cluster75", 
"cluster76", "cluster77", "cluster78", "cluster79", "cluster8", 
"cluster80", "cluster81", "cluster82", "cluster83", "cluster84", 
"cluster85", "cluster86", "cluster87", "cluster88", "cluster89", 
"cluster9", "cluster90", "cluster91", "cluster92", "cluster93", 
"cluster94", "cluster95", "cluster96", "cluster97", "cluster98", 
"cluster99"), class = "factor"), Socrata = structure(c(17L, 17L, 
1L, 13L, 14L, 16L), .Label = c("Assault", "Assault with Deadly Weapon", 
"Breaking and Entering", "Community Policing", "Death", "Disorder", 
"Drugs ", "Missing Person", "Other", "Other Sexual Offense", 
"Property Crime", "Property Crime Residental", "Robbery", "Theft", 
"Theft from Vehicle", "Theft of Vehicle", "Traffic", "Unknown", 
"Vehicle Recovery", "Weapons Offense"), class = "factor")), .Names = c("Cluster", 
"Socrata"), row.names = c(NA, 6L), class = "data.frame") 

看起来像这样:

> head(cluster_socrata_csv) 
    Cluster   Socrata 
1 cluster1   Traffic 
2 cluster2   Traffic 
3 cluster3   Assault 
4 cluster4   Robbery 
5 cluster5   Theft 
6 cluster6 Theft of Vehicle 

我想创建一个列表,其中集群是关键,Socrata是价值。

我试着简单地在一个as.list()函数中嵌套,但是这返回了一个包含2个值的列表,一个用于集群,另一个用于值。

在这种情况下,我想在这6个项目的列表,其中第一项关键是cluster1中,它的价值是交通。对于第六项来说,关键将是cluster6,它的价值是“盗窃车辆”。

回答

1

你可以这样做:

setNames(as.list(df$Socrata),df$Cluster) 

setNames(as.list(as.character(df$Socrata)),df$Cluster) # not to return levels 
+0

谢谢,也可以,但它是返回所有级别,有没有办法来防止这种情况(请参阅zweps答案中的评论) –

+0

我编辑了我的答案:) –

1

我想象的那么简单的像这样的东西...

B = as.list(A$Socrata) 
names(B) = A$Cluster 

其中A是你的数据框

如果你想有只水平的一个子集,你可以尝试

B = as.list(droplevels(A$Socrata)) 

这会给仅实际存在的水平。如果你不希望任何级别,那么我们就必须通过从$ Socrata删除因子类:

B = as.list(as.character(A$Socrata)) 
+0

感谢,似乎除了各个层面的工作正在被拉入。无论如何,以防止这一点? ''''> cluster_socrata_lut [1] $ cluster1 [1]交通 20关卡:攻击与致命的武器打破和进入社区警务进攻......武器进攻''' –

+1

@DougFir看到我的编辑,他们可能会帮助你! 编辑:啊..我看到你有另一个接受的答案。所以你可以忽略我的编辑! – zwep

+0

非常感谢! –

相关问题