我正在使用R,我有四组天气读数,用逗号分隔如下:
{1994: 474732, 1995: -15152, 1996: -3319, 1997: -5421, 1998: 2936, 1999: -3791, 2000: 19809, 2001: -15866, 2002: -8158, 2003: 1675}
三个读数(臭氧,10微米,2.5微米)的顺序随机移动。我想打破4列,用逗号分隔的3个值分成12列并将它们组合在一起,这样四列中的第一个值将合在一起,第二个值合在一起,第三个值合在一起。有没有人有任何想法?谢谢!
答案 0 :(得分:1)
我的“splitstackshape”软件包非常适合这种转换:
library(splitstackshape)
cSplit(mydf, names(mydf), direction = "long")
# pollutant air_quality_idx air_quality_cat air_quality_cat_idx
# 1: PM2.5 28 Good 1
# 2: PM10 6 Good 1
# 3: OZONE 24 Good 1
# 4: PM2.5 28 Good 1
# 5: PM10 5 Good 1
# ---
# 26: PM10 5 Good 1
# 27: OZONE 22 Good 1
# 28: PM2.5 60 Moderate 2
# 29: PM10 5 Good 1
# 30: OZONE 28 Good 1
在基地R中,你也可以这样做:
data.frame(lapply(mydf, function(x)
type.convert(unlist(strsplit(as.character(x), ",", TRUE)))))
或者,使用“tidyverse”,您可以尝试:
library(tidyverse)
mydf %>%
mutate_all(funs(strsplit(as.character(.), ","))) %>%
unnest()
答案 1 :(得分:0)
这是一个解决方案,虽然可能不是最优雅的。它依赖于使用# app/views/comments/_form.html.erb
<%= form_for @comment, :html => {:class => "commentsForm"} do |f| %>
<div class="field">
<%= f.label :description %><br>
<%= f.text_field :description %>
</div>
<%= recaptcha_tags %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
将每个列拆分为三个,然后简单地将该12列表拆分为三个带有tidyr::separate
的4列表,为它们提供相同的列名,并将它们堆叠在顶部彼此dplyr::select
。
bind_rows