【发布时间】:2018-03-22 21:42:08
【问题描述】:
list2env(split(df, df[,1]), envir = .GlobalEnv)
我发现之前发布了这段代码,但问题是我的级别要么是数字,要么在单词之间有空格,我认为 R 不喜欢。因此,数据框出现在我的全局环境中,但我无法使用它们。当我对它们调用函数时,它们无法处理,并且它们不会显示在选项卡完成中。
我是 R 新手,所以我不确定如何很好地复制我的数据集。这是针对碰撞事故的 24 个变量的 14,000 个观测值。
Neighborhood <- c("Westboro", "Hintonburg", "Downtown", "Downtown")
AccidentType <- c("Fatal injury", "property damage", "property damage", "injury")
Neighborhood <- as.factor(Neighborhood)
AccidentType <- as.factor(AccidentType)
df <- data.frame(Neighborhood, AccidentType)
假设我只对财产损失感兴趣,并且想要一个仅显示财产损失事故的全新数据框。我也想将旧数据保留在其原始数据框中。
谢谢。抱歉,我的 R 太糟糕了。
编辑:cmets 中的所有方法都适用于示例数据集,但由于某种原因不是我的实际方法:(
当我尝试这些方法时,我得到了这个:
OttawaCollisions %>% filter(Collision_Classification=="Injury")
[1] Record Location X Y
[5] Date Time Environment Road_Surface
[9] Traffic_Control Collision_Location Light Collision_Classification
[13] Impact_type Seasons Holidays LunarPhase
[17] DayofWeek Accidents Longitude Latitude
[21] Ward WardNumb NumText TimeCat
<0 rows> (or 0-length row.names)
> View(OttawaCollisions)
> subset(OttawaCollisions, Collision_Classification == "P.D. only")
[1] Record Location X Y
[5] Date Time Environment Road_Surface
[9] Traffic_Control Collision_Location Light Collision_Classification
[13] Impact_type Seasons Holidays LunarPhase
[17] DayofWeek Accidents Longitude Latitude
[21] Ward WardNumb NumText TimeCat
<0 rows> (or 0-length row.names)
我不确定为什么会显示零行。这没有道理。我有很多数据(14,000 点),它们都转换为因子。当我对它们调用 str() 时,它们就出现了。呃。
【问题讨论】:
-
只需将它们保存在单个数据框中,并在需要时过滤/子集出您想要的部分,或者只需执行
split()部分并按名称选择您想要的列表元素. -
请举个例子?实际上,我最终也确实需要由其中一些级别分隔的数据框。
-
我的意思是你实际上没有。您可能希望引用名为
data_subset的独立数据框的任何实例都可以替换为内联子集或对split()结果中的列表元素的引用。 -
df %>% filter(AccidentType=="property damage")indplyr包将只挑选出满足该条件的行。df不仅不会被更改,而且您可以将整行通过管道传输到另一个命令中,例如df %>% filter(AccidentType=="property damage") %>% ggplot() +... -
在您的第一个示例中,您拼错了“injury”。
标签: r dataframe factors levels