[R] dataframe: string operations on columns

Peter Ehlers ehlers at ucalgary.ca
Wed Jan 19 00:22:40 CET 2011


On 2011-01-18 08:14, Ivan Calandra wrote:
> Hi,
>
> I guess it's not the nicest way to do it, but it should work for you:
>
> #create some sample data
> df<- data.frame(a=c("A B", "C D", "A C", "A D", "B D"),
> stringsAsFactors=FALSE)
> #split the column by space
> df_split<- strsplit(df$a, split=" ")
>
> #place the first element into column a1 and the second into a2
> for (i in 1:length(df_split[[1]])){
>    df[i+1]<- unlist(lapply(df_split, FUN=function(x) x[i]))
>    names(df)[i+1]<- paste("a",i,sep="")
> }
>
> I hope people will give you more compact solutions.
> HTH,
> Ivan
>
You can replace the loop with

  df <- transform(df, a1 = sapply(df_split, "[[", 1),
                      a2 = sapply(df_split, "[[", 2))

Peter Ehlers

>
>
> Le 1/18/2011 16:30, boris pezzatti a écrit :
>>
>> Dear all,
>> how can I perform a string operation like strsplit(x," ")  on a column
>> of a dataframe, and put the first or the second item of the split into
>> a new dataframe column?
>> (so that on each row it is consistent)
>>
>> Thanks
>> Boris



More information about the R-help mailing list