私はパッケージでカスタマイズしようとしていtidyr
ますが、いくつかの変数を連結した変数を持つという問題に苦しんでいます。以下の最小限の例では、変数v2
をその構成変数v3
に分割しv4
、これらをスイングして、最終的に 4 つの変数v1
-を作成しv4
ます。
require(plyr)
require(dplyr)
require(stringr)
require(tidyr)
data <-
data.frame(
v1=c(1,2),
v2=c("v3 cheese; v4 200", "v3 ham; v4 150")) %>%
tbl_df()
v2
新しいものに分割すると、次のtemp
ようになりますv3
。
mutate(data,
temp=unlist(sapply(str_split(data$v2, pattern=";"), "[", 1)))
v1 v2 temp
1 1 v3 cheese; v4 200 v3 cheese
2 2 v3 ham; v4 150 v3 ham
私の問題は次のとおりです。
- 1)を使用して列名として分割およびスイング
v3
ANDアップするにはどうすればよいですか?v4
tidyr
- 2)私の実際のデータでは、変数名はわかりません(またはそれらは非常に多くあります)が、それらは「var value」という構造を持っています.1)のようにそれらを自動的に識別してスイングするために正規表現を使用したいと思います。
このSO の回答に触発されましたが、変数名の正規表現コードを使用しても機能しませんでした。
更新:私の出力は次のようになります( and でv2
冗長になったため、スキップできます):v3
v4
v1 v2 v3 v4
1 1 v3 cheese; v4 200 cheese 200
2 2 v3 ham; v4 150 ham 150