R - à l'Aide de str_split et unlist de créer deux colonnes
J'ai un dataset qui a des dates et des taux d'intérêt dans la même colonne. J'ai besoin de scinder ces deux nombres dans deux colonnes distinctes, cependant quand j'utilise le code suivant:
Split <- str_split(df$Dates, "[ ]", n = 2)
Dates <- unlist(Split)[1]
Rates <- unlist(Split)[2]
Il ne retourne que le premier "valeur" de chaque élément, c'est à dire, "1971-04-01" pour les Dates et les "7.43" pour les Taux. J'en ai besoin pour remettre toutes les valeurs pour la partie de la chaîne de split et de même pour la deuxième partie de la chaîne de split
Ci-dessous est une partie de la base de données, nombre de lignes = 518.
1971-04-01 7.31
1971-05-01 7.43
1971-06-01 7.53
1971-07-01 7.60
1971-08-01 7.70
1971-09-01 7.69
1971-10-01 7.63
1971-11-01 7.55
1971-12-01 7.48
1972-01-01 7.44
Grâce
OriginalL'auteur j riot | 2014-06-30
Vous devez vous connecter pour publier un commentaire.
Pourrait faire
OriginalL'auteur David Arenburg
Vous pouvez utiliser
reshape2::colsplit
Maintenant, vous pouvez également regarder
tidyr::separate()
qui fait la même choseOriginalL'auteur mnel
À l'aide de @user2583119 de données (s'il vous plaît poster minimale reproductible code, y compris un ensemble de données):
OriginalL'auteur Tyler Rinker
Je suis peut-être biaisé, mais je dirais mon
cSplit
fonction pour ce problème.D'abord, je suis en supposant que nous sommes en commençant par le suivant (une seule colonne)
data.frame
(où il y a plusieurs espaces entre la "date de valeur" et le "taux" de la valeur).Prochaine, obtenir le
cSplit
fonction de mon GitHub Gist, et de l'utiliser. Vous pouvez diviser sur une expression régulière (ici, de multiples espaces).Depuis la fonction convertit une
data.frame
à undata.table
, vous avez accès àsetnames
qui vous permet de renommer vos colonnes en place.OriginalL'auteur A5C1D2H2I1M1N2O1R2T1
Aussi:
Votre code sélectionne uniquement la première observation.
Si vous regardez la
output
de unlist(..), les dates sont suivis par des valeurs. Ainsi, vous pouvez utiliser un index logique.Vous pouvez convertir en deux colonnes d'un dataframe de
Split
en utilisantread.table
read.table
truc un peu, et utilisé dans mon "splitstackshape". Cependant, parce qu'il y a des solutions plus rapides queread.table
, j'ai été jouer avec la création de différentes fonctions, commecSplit
etconcat.split.DT
.Grâce
Ananda Mahto
pour les fonctions. Il serait préférable d'avoircSplit
dans un package.Il est prévu--n'en ai pas eu l'occasion de tester si tout semble OK pour l'enregistrer dans la "splitstackshape". 🙂
OriginalL'auteur akrun
Essayez ceci:
OriginalL'auteur lawyeR
OriginalL'auteur Liangbo Huang