Advertisement
Guest User

Untitled

a guest
Apr 20th, 2014
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. > dat <- c("Aa, 1", "Aa, 2", "Ha, 1", "Hpa, 8")
  2. > read.csv(text = dat, header=FALSE, col.names = c("Trial.Type", "Intensity"))
  3. Trial.Type Intensity
  4. 1 Aa 1
  5. 2 Aa 2
  6. 3 Ha 1
  7. 4 Hpa 8
  8.  
  9. mydf <- data.frame(A = factor(c("1, Z", "2, Y", "3, X", "4, W")),
  10. B = c("11, ZZ", "22, YY", "33, XX", "44, WW"),
  11. C = c(123, 234, 345, 456), stringsAsFactors = FALSE)
  12. mydf
  13. # A B C
  14. # 1 1, Z 11, ZZ 123
  15. # 2 2, Y 22, YY 234
  16. # 3 3, X 33, XX 345
  17. # 4 4, W 44, WW 456
  18. str(mydf)
  19. # 'data.frame': 4 obs. of 3 variables:
  20. # $ A: Factor w/ 4 levels "1, Z","2, Y",..: 1 2 3 4
  21. # $ B: chr "11, ZZ" "22, YY" "33, XX" "44, WW"
  22. # $ C: num 123 234 345 456
  23.  
  24. library(splitstackshape)
  25. ## Split a factor column
  26. concat.split(mydf, split.col = "A", sep = ",")
  27. # A B C A_1 A_2
  28. # 1 1, Z 11, ZZ 123 1 Z
  29. # 2 2, Y 22, YY 234 2 Y
  30. # 3 3, X 33, XX 345 3 X
  31. # 4 4, W 44, WW 456 4 W
  32.  
  33. ## Split a character column
  34. concat.split(mydf, split.col = "B", sep = ",")
  35. # A B C B_1 B_2
  36. # 1 1, Z 11, ZZ 123 11 ZZ
  37. # 2 2, Y 22, YY 234 22 YY
  38. # 3 3, X 33, XX 345 33 XX
  39. # 4 4, W 44, WW 456 44 WW
  40.  
  41. ## Split two columns in one go
  42. concat.split.multiple(mydf, split.cols = c("A", "B"), seps = ",")
  43. # C A_1 A_2 B_1 B_2
  44. # 1 123 1 Z 11 ZZ
  45. # 2 234 2 Y 22 YY
  46. # 3 345 3 X 33 XX
  47. # 4 456 4 W 44 WW
  48.  
  49. dat = c("Aa, 1", "Aa, 2", "Ha, 1", "Hpa, 8")
  50. spl = strsplit(dat, ", ")
  51. data.frame(Trial.Type = unlist(lapply(spl, "[", 1)),
  52. Intensity = as.numeric(unlist(lapply(spl, "[", 2))))
  53. # Trial.Type Intensity
  54. # 1 Aa 1
  55. # 2 Aa 2
  56. # 3 Ha 1
  57. # 4 Hpa 8
  58.  
  59. datNames <- names(dat)
  60. dat <- cbind(t(matrix(unlist(strsplit(dat$Trial.type, ", ")),ncol=dim(dat)[1])))
  61. names(dat) <- c(datNames,"Trial.type2","Intensity")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement