Skip to content

how to count "A","C","T","G" in each row in a big data.frame?

14 messages · jim holtman, Jessica Streicher, William Dunlap +4 more

#
Dear All

I have a data.frame like that:
structure(list(name = c("Gga_rs10722041", "Gga_rs10722249", "Gga_rs10722565",
"Gga_rs10723082", "Gga_rs10723993", "Gga_rs10724555", "Gga_rs10726238",
"Gga_rs10726461", "Gga_rs10726774", "Gga_rs10726967", "Gga_rs10727581",
"Gga_rs10728004", "Gga_rs10728156", "Gga_rs10728177", "Gga_rs10728373",
"Gga_rs10728585", "Gga_rs10729598", "Gga_rs10729643", "Gga_rs10729685",
"Gga_rs10729827"), chr = c(7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L), pos = c(11248993L,
20038370L, 16164457L, 38050527L, 20307106L, 13707090L, 12230458L,
36732967L, 2790856L, 1305785L, 29631963L, 13606593L, 13656397L,
2261611L, 32096703L, 13733153L, 16524147L, 558735L, 12514023L,
3619538L), strand = c("+", "+", "+", "+", "+", "+", "+", "+",
"+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+"),
    X2353 = c("AA", "TT", "TT", "CC", "TT", "CC", "CC", "TT",
    "CC", "GG", "AG", "AG", "AG", "TT", "CC", "AG", "CC", "AA",
    "GG", "GG"), X2409 = c("AA", "CT", "TT", "CC", "CT", "CC",
    "CC", "TT", "CC", "GG", "GG", "AG", "AG", "TT", "CC", "AG",
    "CC", "AA", "AG", "GA"), X2500 = c("GA", "TT", "TT", "CC",
    "TT", "CC", "CC", "TT", "CC", "GG", "GG", "GG", "GG", "GT",
    "CT", "GG", "CC", "AA", "AA", "AA"), X2598 = c("AA", "TT",
    "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA", "AG",
    "GG", "TT", "CC", "AG", "TC", "AA", "AA", "AG"), X2610 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "GA", "GG", "TT", "CC", "GA", "CC", "AA", "AA", "GA"), X2300 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "AA", "AG", "TT", "TC", "AA", "TC", "AA", "AG", "AA"), X2507 = c("AG",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GA", "GG", "TT", "TC", "GG", "CC", "AA", "GA", "AG"), X2530 = c("AG",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "AA",
    "GG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AA"), X2327 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "GG", "GG", "TT", "TC", "GG", "CC", "AA", "AA", "AA"), X2389 = c("AA",
    "CC", "TT", "CC", "CC", "CC", "CC", "TT", "CC", "AG", "GG",
    "AG", "GG", "TT", "TC", "AG", "CC", "AA", "AA", "AA"), X2408 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "GA", "GG", "TT", "CC", "GA", "CC", "AA", "AA", "AG"), X2463 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2420 = c("GA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "AG",
    "GG", "GG", "TG", "TT", "GG", "CT", "AA", "AA", "AA"), X2563 = c("GA",
    "CC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GA",
    "GG", "GG", "GT", "TT", "GG", "CT", "AA", "AA", "AA"), X2462 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA",
    "GG", "GG", "GT", "TC", "GG", "CC", "AA", "AA", "AA"), X2292 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "AA", "GG", "TG", "TC", "AA", "TC", "AA", "AA", "AA"), X2405 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "AG", "GG", "TG", "TT", "AA", "CT", "AA", "AA", "AA"), X2543 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GA", "GA",
    "GA", "GG", "TT", "CT", "GA", "TT", "AA", "AA", "GG"), X2557 = c("AG",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AG",
    "GA", "GG", "GT", "CT", "GA", "CT", "AA", "AA", "AG"), X2583 = c("GA",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GA",
    "GG", "GG", "GG", "CT", "GA", "CT", "AA", "AA", "AG"), X2322 = c("AG",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "GT", "TT", "GG", "CC", "AA", "AA", "GA"), X2535 = c("AA",
    "TC", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "GG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AG"), X2536 = c("GA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
    "AG", "GG", "TT", "TC", "AG", "TC", "AA", "AA", "GA"), X2581 = c("AG",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GA", "GG", "TT", "CC", "GA", "CT", "AA", "AA", "AG"), X2570 = c("AA",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "TC", "GG", "CC", "AA", "AA", "GG"), X2476 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "GT", "TC", "AG", "CC", "AA", "AA", "AG"), X2534 = c("GA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GA",
    "AG", "GG", "TG", "CC", "AG", "TC", "AA", "AA", "AA"), X2280 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "AG",
    "AG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AG"), X2316 = c("AA",
    "CC", "TT", "CC", "CC", "CC", "CC", "TT", "CC", "AG", "AA",
    "AA", "AG", "TT", "TC", "GG", "CT", "AA", "GG", "GG"), X2339 = c("AA",
    "CC", "TT", "CC", "CC", "CC", "CC", "TT", "CC", "GA", "AA",
    "GG", "GG", "GT", "CT", "GG", "TT", "AA", "AA", "AG"), X2331 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AG"), X2343 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2352 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA",
    "GG", "GG", "TT", "CC", "GG", "CC", "AA", "GA", "AG"), X2293 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "AA", "GG", "TT", "TC", "AA", "CT", "AA", "AA", "AA"), X2338 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "AG", "GG", "TT", "TC", "AG", "TC", "AA", "AA", "GA"), X2449 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AG",
    "AA", "GG", "TT", "CC", "AA", "TC", "AA", "AA", "GA"), X2296 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GA", "GG",
    "AG", "GG", "TG", "TC", "AG", "CC", "AA", "AA", "AA"), X2453 = c("AG",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "AG", "GG",
    "GA", "GG", "GT", "CT", "GA", "CT", "AA", "AA", "GA"), X2460 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "AG", "GG",
    "GG", "GG", "TG", "CT", "GG", "CC", "AA", "AA", "AA"), X2474 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GA", "AG",
    "AG", "GG", "TT", "CC", "AG", "TC", "AA", "AA", "GA"), X2603 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AG",
    "AG", "GG", "TT", "CC", "AG", "CC", "AA", "AA", "GA"), X2282 = c("GA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
    "AA", "GG", "TT", "TT", "AA", "CC", "AA", "AA", "GA"), X2313 = c("AG",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AG",
    "GA", "GG", "GT", "CC", "GA", "CT", "AA", "AA", "AA"), X2538 = c("AA",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AA",
    "AG", "GG", "TG", "CC", "AG", "CC", "AA", "AA", "AA"), X2522 = c("AG",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GA", "GG", "TT", "TC", "GG", "CC", "AA", "AG", "GA"), X2489 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "GT", "TC", "AG", "CC", "AA", "AA", "AG"), X2564 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GA", "GG",
    "GG", "GG", "TT", "CC", "AA", "CT", "AA", "AA", "AA"), X2594 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA",
    "AG", "GG", "TT", "TC", "AG", "TC", "AA", "AA", "AG"), X2274 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2451 = c("AG",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2321 = c("GG",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AG",
    "AA", "GG", "TT", "TT", "AA", "CC", "AA", "AA", "AA"), X2356 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GA", "AG",
    "AG", "GG", "TG", "TC", "AG", "TT", "AA", "AA", "AA"), X2611 = c("AG",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GA", "GG", "TT", "CT", "GA", "TT", "AA", "AA", "AG")), .Names = c("name",
"chr", "pos", "strand", "X2353", "X2409", "X2500", "X2598", "X2610",
"X2300", "X2507", "X2530", "X2327", "X2389", "X2408", "X2463",
"X2420", "X2563", "X2462", "X2292", "X2405", "X2543", "X2557",
"X2583", "X2322", "X2535", "X2536", "X2581", "X2570", "X2476",
"X2534", "X2280", "X2316", "X2339", "X2331", "X2343", "X2352",
"X2293", "X2338", "X2449", "X2296", "X2453", "X2460", "X2474",
"X2603", "X2282", "X2313", "X2538", "X2522", "X2489", "X2564",
"X2594", "X2274", "X2451", "X2321", "X2356", "X2611"), row.names =
27412:27431, class = "data.frame")

how to count how many "A","C","T","G" in each row
an example output what I want is  like that
A  C   AA  AC  CC
3   5    1      1     2

Thanks in advance

Yao He
#
forgot the data.  this will count the characters; you can add logic
with 'table' to count groups

########################
x <-
structure(list(name = c("Gga_rs10722041", "Gga_rs10722249", "Gga_rs10722565",
"Gga_rs10723082", "Gga_rs10723993", "Gga_rs10724555", "Gga_rs10726238",
"Gga_rs10726461", "Gga_rs10726774", "Gga_rs10726967", "Gga_rs10727581",
"Gga_rs10728004", "Gga_rs10728156", "Gga_rs10728177", "Gga_rs10728373",
"Gga_rs10728585", "Gga_rs10729598", "Gga_rs10729643", "Gga_rs10729685",
"Gga_rs10729827"), chr = c(7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L), pos = c(11248993L,
20038370L, 16164457L, 38050527L, 20307106L, 13707090L, 12230458L,
36732967L, 2790856L, 1305785L, 29631963L, 13606593L, 13656397L,
2261611L, 32096703L, 13733153L, 16524147L, 558735L, 12514023L,
3619538L), strand = c("+", "+", "+", "+", "+", "+", "+", "+",
"+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+"),
    X2353 = c("AA", "TT", "TT", "CC", "TT", "CC", "CC", "TT",
    "CC", "GG", "AG", "AG", "AG", "TT", "CC", "AG", "CC", "AA",
    "GG", "GG"), X2409 = c("AA", "CT", "TT", "CC", "CT", "CC",
    "CC", "TT", "CC", "GG", "GG", "AG", "AG", "TT", "CC", "AG",
    "CC", "AA", "AG", "GA"), X2500 = c("GA", "TT", "TT", "CC",
    "TT", "CC", "CC", "TT", "CC", "GG", "GG", "GG", "GG", "GT",
    "CT", "GG", "CC", "AA", "AA", "AA"), X2598 = c("AA", "TT",
    "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA", "AG",
    "GG", "TT", "CC", "AG", "TC", "AA", "AA", "AG"), X2610 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "GA", "GG", "TT", "CC", "GA", "CC", "AA", "AA", "GA"), X2300 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "AA", "AG", "TT", "TC", "AA", "TC", "AA", "AG", "AA"), X2507 = c("AG",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GA", "GG", "TT", "TC", "GG", "CC", "AA", "GA", "AG"), X2530 = c("AG",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "AA",
    "GG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AA"), X2327 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "GG", "GG", "TT", "TC", "GG", "CC", "AA", "AA", "AA"), X2389 = c("AA",
    "CC", "TT", "CC", "CC", "CC", "CC", "TT", "CC", "AG", "GG",
    "AG", "GG", "TT", "TC", "AG", "CC", "AA", "AA", "AA"), X2408 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "GA", "GG", "TT", "CC", "GA", "CC", "AA", "AA", "AG"), X2463 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2420 = c("GA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "AG",
    "GG", "GG", "TG", "TT", "GG", "CT", "AA", "AA", "AA"), X2563 = c("GA",
    "CC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GA",
    "GG", "GG", "GT", "TT", "GG", "CT", "AA", "AA", "AA"), X2462 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA",
    "GG", "GG", "GT", "TC", "GG", "CC", "AA", "AA", "AA"), X2292 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "AA", "GG", "TG", "TC", "AA", "TC", "AA", "AA", "AA"), X2405 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "AG", "GG", "TG", "TT", "AA", "CT", "AA", "AA", "AA"), X2543 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GA", "GA",
    "GA", "GG", "TT", "CT", "GA", "TT", "AA", "AA", "GG"), X2557 = c("AG",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AG",
    "GA", "GG", "GT", "CT", "GA", "CT", "AA", "AA", "AG"), X2583 = c("GA",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GA",
    "GG", "GG", "GG", "CT", "GA", "CT", "AA", "AA", "AG"), X2322 = c("AG",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "GT", "TT", "GG", "CC", "AA", "AA", "GA"), X2535 = c("AA",
    "TC", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "GG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AG"), X2536 = c("GA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
    "AG", "GG", "TT", "TC", "AG", "TC", "AA", "AA", "GA"), X2581 = c("AG",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GA", "GG", "TT", "CC", "GA", "CT", "AA", "AA", "AG"), X2570 = c("AA",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "TC", "GG", "CC", "AA", "AA", "GG"), X2476 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "GT", "TC", "AG", "CC", "AA", "AA", "AG"), X2534 = c("GA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GA",
    "AG", "GG", "TG", "CC", "AG", "TC", "AA", "AA", "AA"), X2280 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "AG",
    "AG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AG"), X2316 = c("AA",
    "CC", "TT", "CC", "CC", "CC", "CC", "TT", "CC", "AG", "AA",
    "AA", "AG", "TT", "TC", "GG", "CT", "AA", "GG", "GG"), X2339 = c("AA",
    "CC", "TT", "CC", "CC", "CC", "CC", "TT", "CC", "GA", "AA",
    "GG", "GG", "GT", "CT", "GG", "TT", "AA", "AA", "AG"), X2331 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AG"), X2343 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2352 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA",
    "GG", "GG", "TT", "CC", "GG", "CC", "AA", "GA", "AG"), X2293 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
    "AA", "GG", "TT", "TC", "AA", "CT", "AA", "AA", "AA"), X2338 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "AG", "GG", "TT", "TC", "AG", "TC", "AA", "AA", "GA"), X2449 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AG",
    "AA", "GG", "TT", "CC", "AA", "TC", "AA", "AA", "GA"), X2296 = c("GA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GA", "GG",
    "AG", "GG", "TG", "TC", "AG", "CC", "AA", "AA", "AA"), X2453 = c("AG",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "AG", "GG",
    "GA", "GG", "GT", "CT", "GA", "CT", "AA", "AA", "GA"), X2460 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "AG", "GG",
    "GG", "GG", "TG", "CT", "GG", "CC", "AA", "AA", "AA"), X2474 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GA", "AG",
    "AG", "GG", "TT", "CC", "AG", "TC", "AA", "AA", "GA"), X2603 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AG",
    "AG", "GG", "TT", "CC", "AG", "CC", "AA", "AA", "GA"), X2282 = c("GA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
    "AA", "GG", "TT", "TT", "AA", "CC", "AA", "AA", "GA"), X2313 = c("AG",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AG",
    "GA", "GG", "GT", "CC", "GA", "CT", "AA", "AA", "AA"), X2538 = c("AA",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AA",
    "AG", "GG", "TG", "CC", "AG", "CC", "AA", "AA", "AA"), X2522 = c("AG",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GA", "GG", "TT", "TC", "GG", "CC", "AA", "AG", "GA"), X2489 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "GT", "TC", "AG", "CC", "AA", "AA", "AG"), X2564 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GA", "GG",
    "GG", "GG", "TT", "CC", "AA", "CT", "AA", "AA", "AA"), X2594 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA",
    "AG", "GG", "TT", "TC", "AG", "TC", "AA", "AA", "AG"), X2274 = c("AA",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2451 = c("AG",
    "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2321 = c("GG",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AG",
    "AA", "GG", "TT", "TT", "AA", "CC", "AA", "AA", "AA"), X2356 = c("AA",
    "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GA", "AG",
    "AG", "GG", "TG", "TC", "AG", "TT", "AA", "AA", "AA"), X2611 = c("AG",
    "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GG",
    "GA", "GG", "TT", "CT", "GA", "TT", "AA", "AA", "AG")), .Names = c("name",
"chr", "pos", "strand", "X2353", "X2409", "X2500", "X2598", "X2610",
"X2300", "X2507", "X2530", "X2327", "X2389", "X2408", "X2463",
"X2420", "X2563", "X2462", "X2292", "X2405", "X2543", "X2557",
"X2583", "X2322", "X2535", "X2536", "X2581", "X2570", "X2476",
"X2534", "X2280", "X2316", "X2339", "X2331", "X2343", "X2352",
"X2293", "X2338", "X2449", "X2296", "X2453", "X2460", "X2474",
"X2603", "X2282", "X2313", "X2538", "X2522", "X2489", "X2564",
"X2594", "X2274", "X2451", "X2321", "X2356", "X2611"), row.names =
27412:27431, class = "data.frame")

# create a 'key' of characters in the "X" columns
indx <- which(grepl("^X", names(x)))

x$key <- apply(x[, indx], 1, paste, collapse = '')

# create counts
counts <- t(apply(x, 1, function(z){
    c(A = nchar(gsub("[^A]", '', z['key']))
        , C = nchar(gsub("[^C]", '', z['key']))
        , G = nchar(gsub("[^G]", '', z['key']))
        , T = nchar(gsub("[^T]", '', z['key']))
        )
}))

############# output
A.key C.key G.key T.key
27412    81     0    25     0
27413     0    29     0    77
27414     0     0     0   106
27415     0   106     0     0
27416     0    27     0    79
27417     0   106     0     0
27418     0   106     0     0
27419     0     0     0   106
27420     0   106     0     0
27421    10     0    96     0
27422    37     0    69     0
27423    39     0    67     0
27424     4     0   102     0
27425     0     0    20    86
27426     0    65     0    41
27427    40     0    66     0
27428     0    78     0    28
27429   106     0     0     0
27430    97     0     9     0
27431    68     0    38     0
On Wed, Jan 9, 2013 at 9:23 AM, Yao He <yao.h.1988 at gmail.com> wrote:

  
    
#
If test is the structure, will

test2<-sapply(test[,-c(1:4)],function(x){table(t(x))})

to what you want?
On 09.01.2013, at 15:48, jim holtman wrote:

            
#
Sorry, you wanted rows, i wrote for columns

#rows would be:
test2<-apply(test[,-c(1:4)],1,function(x){table(t(x))})

#find single values in a row
sapply(test2,function(row){
	allVars<-paste(names(row),collapse="")
	u <- unique(strsplit(allVars,"")[[1]])
	parts<-sapply(names(row),function(x){u%in%strsplit(x,"")[[1]]})
	mat<-parts%*%row
	rownames(mat)<-u
	mat
})

though i guess lists aren't ideal, but theres another answer as well i see.
On 09.01.2013, at 15:23, Yao He wrote:

            
#
In fact I want to calculate the gene frequency of each SNP.

The key problems are that:
1. my data.frame is large ,about 50,000 rows. So it is so slow to
split() it by row

2 .The allele in each SNP (each row) are different.Some are A/G, some
are G/C. It is a little bit embarrassed for me to handle it.

Thank you for your help

2013/1/9 jim holtman <jholtman at gmail.com>:

  
    
#
Thanks a lot.

The problem is that I don't know how to handle the output list as I
want calculate the frequency of A or G or T or C by row.


Yao He
2013/1/10 Jessica Streicher <j.streicher at micromata.de>:

  
    
#
Can you get what you need from the following, where 'd' is your data.frame,
the first four columns of which are irrelevant to this problem?
  > dd <- d[,-(1:4)] ; table(rownames(dd)[row(dd)], unlist(dd))
         
          AA AG CC CT GA GG GT TC TG TT
    27412 29 10  0  0 13  1  0  0  0  0
    27413  0  0  4  9  0  0  0 12  0 28
    27414  0  0  0  0  0  0  0  0  0 53
    27415  0  0 53  0  0  0  0  0  0  0
    ...
    27430 46  3  0  0  2  2  0  0  0  0
    27431 19 15  0  0 15  4  0  0  0  0
table() is pretty quick.

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
#
It is really a good output. Maybe I could go on with this output.
Everytime I  understand R further from your help.
The first four cols are irrelevant. It is a negligence

2013/1/10 William Dunlap <wdunlap at tibco.com>:

  
    
#
Hi Yao,
You could also use:
library(reshape2)
dd<-dat1[,-(1:4)]
res<-dcast(melt(within(dd,{id=row.names(dd)}),id.var="id"),id~value,length)
head(res)
#???? id AA AG CC CT GA GG GT TC TG TT
#1 27412 29 10? 0? 0 13? 1? 0? 0? 0? 0
#2 27413? 0? 0? 4? 9? 0? 0? 0 12? 0 28
#3 27414? 0? 0? 0? 0? 0? 0? 0? 0? 0 53
#4 27415? 0? 0 53? 0? 0? 0? 0? 0? 0? 0
#5 27416? 0? 0? 3? 9? 0? 0? 0 12? 0 29
#6 27417? 0? 0 53? 0? 0? 0? 0? 0? 0? 0

#Just for comparison:
dat2<- dat1[rep(row.names(dat1),2000),]
?nrow(dat2)
#[1] 40000
?row.names(dat2)<-1:40000
?dd <- dat2[,-(1:4)] 
? system.time(res1<- table(rownames(dd)[row(dd)], unlist(dd)))
#?? user? system elapsed 
#? 5.840?? 0.104?? 5.954 
?system.time(res2 <- dcast(melt(within(dd,{id=row.names(dd)}),id.var="id"),id~value,length))
#?? user? system elapsed 
#? 3.100?? 0.064?? 3.167 
?head(res1,3)
???? 
?#???? AA AG CC CT GA GG GT TC TG TT
?# 1?? 29 10? 0? 0 13? 1? 0? 0? 0? 0
?# 10?? 0? 4? 0? 0? 6 43? 0? 0? 0? 0
?# 100 19 15? 0? 0 15? 4? 0? 0? 0? 0
?head(res2,3)
#?? id AA AG CC CT GA GG GT TC TG TT
#1?? 1 29 10? 0? 0 13? 1? 0? 0? 0? 0
#2? 10? 0? 4? 0? 0? 6 43? 0? 0? 0? 0
#3 100 19 15? 0? 0 15? 4? 0? 0? 0? 0

A.K.







----- Original Message -----
From: Yao He <yao.h.1988 at gmail.com>
To: R help <r-help at r-project.org>
Cc: 
Sent: Wednesday, January 9, 2013 9:23 AM
Subject: [R] how to count "A","C","T","G" in each row in a big data.frame?

Dear All

I have a data.frame like that:
structure(list(name = c("Gga_rs10722041", "Gga_rs10722249", "Gga_rs10722565",
"Gga_rs10723082", "Gga_rs10723993", "Gga_rs10724555", "Gga_rs10726238",
"Gga_rs10726461", "Gga_rs10726774", "Gga_rs10726967", "Gga_rs10727581",
"Gga_rs10728004", "Gga_rs10728156", "Gga_rs10728177", "Gga_rs10728373",
"Gga_rs10728585", "Gga_rs10729598", "Gga_rs10729643", "Gga_rs10729685",
"Gga_rs10729827"), chr = c(7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L), pos = c(11248993L,
20038370L, 16164457L, 38050527L, 20307106L, 13707090L, 12230458L,
36732967L, 2790856L, 1305785L, 29631963L, 13606593L, 13656397L,
2261611L, 32096703L, 13733153L, 16524147L, 558735L, 12514023L,
3619538L), strand = c("+", "+", "+", "+", "+", "+", "+", "+",
"+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+"),
? ? X2353 = c("AA", "TT", "TT", "CC", "TT", "CC", "CC", "TT",
? ? "CC", "GG", "AG", "AG", "AG", "TT", "CC", "AG", "CC", "AA",
? ? "GG", "GG"), X2409 = c("AA", "CT", "TT", "CC", "CT", "CC",
? ? "CC", "TT", "CC", "GG", "GG", "AG", "AG", "TT", "CC", "AG",
? ? "CC", "AA", "AG", "GA"), X2500 = c("GA", "TT", "TT", "CC",
? ? "TT", "CC", "CC", "TT", "CC", "GG", "GG", "GG", "GG", "GT",
? ? "CT", "GG", "CC", "AA", "AA", "AA"), X2598 = c("AA", "TT",
? ? "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA", "AG",
? ? "GG", "TT", "CC", "AG", "TC", "AA", "AA", "AG"), X2610 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
? ? "GA", "GG", "TT", "CC", "GA", "CC", "AA", "AA", "GA"), X2300 = c("GA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
? ? "AA", "AG", "TT", "TC", "AA", "TC", "AA", "AG", "AA"), X2507 = c("AG",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GA", "GG", "TT", "TC", "GG", "CC", "AA", "GA", "AG"), X2530 = c("AG",
? ? "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "AA",
? ? "GG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AA"), X2327 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
? ? "GG", "GG", "TT", "TC", "GG", "CC", "AA", "AA", "AA"), X2389 = c("AA",
? ? "CC", "TT", "CC", "CC", "CC", "CC", "TT", "CC", "AG", "GG",
? ? "AG", "GG", "TT", "TC", "AG", "CC", "AA", "AA", "AA"), X2408 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
? ? "GA", "GG", "TT", "CC", "GA", "CC", "AA", "AA", "AG"), X2463 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2420 = c("GA",
? ? "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "AG",
? ? "GG", "GG", "TG", "TT", "GG", "CT", "AA", "AA", "AA"), X2563 = c("GA",
? ? "CC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GA",
? ? "GG", "GG", "GT", "TT", "GG", "CT", "AA", "AA", "AA"), X2462 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA",
? ? "GG", "GG", "GT", "TC", "GG", "CC", "AA", "AA", "AA"), X2292 = c("GA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
? ? "AA", "GG", "TG", "TC", "AA", "TC", "AA", "AA", "AA"), X2405 = c("GA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "AG", "GG", "TG", "TT", "AA", "CT", "AA", "AA", "AA"), X2543 = c("AA",
? ? "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GA", "GA",
? ? "GA", "GG", "TT", "CT", "GA", "TT", "AA", "AA", "GG"), X2557 = c("AG",
? ? "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AG",
? ? "GA", "GG", "GT", "CT", "GA", "CT", "AA", "AA", "AG"), X2583 = c("GA",
? ? "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GA",
? ? "GG", "GG", "GG", "CT", "GA", "CT", "AA", "AA", "AG"), X2322 = c("AG",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GG", "GG", "GT", "TT", "GG", "CC", "AA", "AA", "GA"), X2535 = c("AA",
? ? "TC", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
? ? "GG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AG"), X2536 = c("GA",
? ? "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "AG", "GG", "TT", "TC", "AG", "TC", "AA", "AA", "GA"), X2581 = c("AG",
? ? "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GA", "GG", "TT", "CC", "GA", "CT", "AA", "AA", "AG"), X2570 = c("AA",
? ? "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GG", "GG", "TT", "TC", "GG", "CC", "AA", "AA", "GG"), X2476 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GG", "GG", "GT", "TC", "AG", "CC", "AA", "AA", "AG"), X2534 = c("GA",
? ? "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GA",
? ? "AG", "GG", "TG", "CC", "AG", "TC", "AA", "AA", "AA"), X2280 = c("AA",
? ? "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "AG",
? ? "AG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AG"), X2316 = c("AA",
? ? "CC", "TT", "CC", "CC", "CC", "CC", "TT", "CC", "AG", "AA",
? ? "AA", "AG", "TT", "TC", "GG", "CT", "AA", "GG", "GG"), X2339 = c("AA",
? ? "CC", "TT", "CC", "CC", "CC", "CC", "TT", "CC", "GA", "AA",
? ? "GG", "GG", "GT", "CT", "GG", "TT", "AA", "AA", "AG"), X2331 = c("AA",
? ? "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GG", "GG", "TT", "CC", "GG", "CC", "AA", "AA", "AG"), X2343 = c("AA",
? ? "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2352 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA",
? ? "GG", "GG", "TT", "CC", "GG", "CC", "AA", "GA", "AG"), X2293 = c("GA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GA",
? ? "AA", "GG", "TT", "TC", "AA", "CT", "AA", "AA", "AA"), X2338 = c("GA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "AG", "GG", "TT", "TC", "AG", "TC", "AA", "AA", "GA"), X2449 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AG",
? ? "AA", "GG", "TT", "CC", "AA", "TC", "AA", "AA", "GA"), X2296 = c("GA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GA", "GG",
? ? "AG", "GG", "TG", "TC", "AG", "CC", "AA", "AA", "AA"), X2453 = c("AG",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "AG", "GG",
? ? "GA", "GG", "GT", "CT", "GA", "CT", "AA", "AA", "GA"), X2460 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "AG", "GG",
? ? "GG", "GG", "TG", "CT", "GG", "CC", "AA", "AA", "AA"), X2474 = c("AA",
? ? "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GA", "AG",
? ? "AG", "GG", "TT", "CC", "AG", "TC", "AA", "AA", "GA"), X2603 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AG",
? ? "AG", "GG", "TT", "CC", "AG", "CC", "AA", "AA", "GA"), X2282 = c("GA",
? ? "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "AA", "GG", "TT", "TT", "AA", "CC", "AA", "AA", "GA"), X2313 = c("AG",
? ? "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AG",
? ? "GA", "GG", "GT", "CC", "GA", "CT", "AA", "AA", "AA"), X2538 = c("AA",
? ? "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AA",
? ? "AG", "GG", "TG", "CC", "AG", "CC", "AA", "AA", "AA"), X2522 = c("AG",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GA", "GG", "TT", "TC", "GG", "CC", "AA", "AG", "GA"), X2489 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GG", "GG", "GT", "TC", "AG", "CC", "AA", "AA", "AG"), X2564 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GA", "GG",
? ? "GG", "GG", "TT", "CC", "AA", "CT", "AA", "AA", "AA"), X2594 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "AA",
? ? "AG", "GG", "TT", "TC", "AG", "TC", "AA", "AA", "AG"), X2274 = c("AA",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2451 = c("AG",
? ? "TT", "TT", "CC", "TT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GG", "GG", "TT", "CT", "GG", "CC", "AA", "AA", "GA"), X2321 = c("GG",
? ? "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "AG",
? ? "AA", "GG", "TT", "TT", "AA", "CC", "AA", "AA", "AA"), X2356 = c("AA",
? ? "TC", "TT", "CC", "TC", "CC", "CC", "TT", "CC", "GA", "AG",
? ? "AG", "GG", "TG", "TC", "AG", "TT", "AA", "AA", "AA"), X2611 = c("AG",
? ? "CT", "TT", "CC", "CT", "CC", "CC", "TT", "CC", "GG", "GG",
? ? "GA", "GG", "TT", "CT", "GA", "TT", "AA", "AA", "AG")), .Names = c("name",
"chr", "pos", "strand", "X2353", "X2409", "X2500", "X2598", "X2610",
"X2300", "X2507", "X2530", "X2327", "X2389", "X2408", "X2463",
"X2420", "X2563", "X2462", "X2292", "X2405", "X2543", "X2557",
"X2583", "X2322", "X2535", "X2536", "X2581", "X2570", "X2476",
"X2534", "X2280", "X2316", "X2339", "X2331", "X2343", "X2352",
"X2293", "X2338", "X2449", "X2296", "X2453", "X2460", "X2474",
"X2603", "X2282", "X2313", "X2538", "X2522", "X2489", "X2564",
"X2594", "X2274", "X2451", "X2321", "X2356", "X2611"), row.names =
27412:27431, class = "data.frame")

how to count how many "A","C","T","G" in each row
an example output what I want is? like that
A? C?  AA? AC? CC
3?  5? ? 1? ? ? 1? ?  2

Thanks in advance

Yao He
#
Hi arun
Then how could spilt them and get a table of letters count such as:
  id AA AG CC CT GA GG GT TC TG TT
              id   A T C G
Thanks

2013/1/10 arun <smartpink111 at yahoo.com>:

  
    
#
HI Yao,

You could use this: (Jorge's solution may be faster, I didn't check)
idx<-sapply(strsplit(names(res),split=""),anyDuplicated) #res from the previous solution:
res1<-do.call(cbind,lapply(LETTERS[c(1,3,7,20)],function(i){rowSums(data.frame(rowSums(res[idx==0][grep(i,names(res)[idx==0])]),2*res[idx!=0][grep(i,names(res)[idx!=0])]))}))
colnames(res1)<-LETTERS[c(1,3,7,20)]
?res2<-data.frame(res,res1)
?head(res2)
#???? id AA AG CC CT GA GG GT TC TG TT? A?? C? G?? T
#1 27412 29 10? 0? 0 13? 1? 0? 0? 0? 0 81?? 0 25?? 0
#2 27413? 0? 0? 4? 9? 0? 0? 0 12? 0 28? 0? 29? 0? 77
#3 27414? 0? 0? 0? 0? 0? 0? 0? 0? 0 53? 0?? 0? 0 106
#4 27415? 0? 0 53? 0? 0? 0? 0? 0? 0? 0? 0 106? 0?? 0
#5 27416? 0? 0? 3? 9? 0? 0? 0 12? 0 29? 0? 27? 0? 79
#6 27417? 0? 0 53? 0? 0? 0? 0? 0? 0? 0? 0 106? 0?? 0
A.K.




----- Original Message -----
From: Yao He <yao.h.1988 at gmail.com>
To: arun <smartpink111 at yahoo.com>
Cc: William Dunlap <wdunlap at tibco.com>; R help <r-help at r-project.org>
Sent: Wednesday, January 9, 2013 11:46 PM
Subject: Re: [R] how to count "A","C","T","G" in each row in a big data.frame?

Hi arun
Then how could spilt them and get a table of letters count such as:
? id AA AG CC CT GA GG GT TC TG TT
? ? ? ? ? ? ? id?  A T C G
Thanks

2013/1/10 arun <smartpink111 at yahoo.com>:

  
    
#
On 10 January 2013 01:04, Yao He <yao.h.1988 at gmail.com> wrote:
Why don't you use bioconductor for your analysis instead of trying to
develop by your own? For example:

http://www.bioconductor.org/help/course-materials/2008/MGED08/BiostringsMGED2008.pdf

For example alphabetFrequency function in the ShortRead package. I am
sure you can handle I/O
somehow to interface with available tools in bioconductor.
#
Hi Yao,
Did comparison of the different methods:


dat2<- dat1[rep(row.names(dat1),2000),]
? nrow(dat2)
#[1] 40000
row.names(dat2)<-1:40000
?dd <- dat2[,-(1:4)] 

?foo <- function(x) table(factor(unlist(strsplit(as.character(x), "")), levels = c('A','C','G','T')))
?system.time(res3<-t(apply(dat2[, -c(1:4)], 1, foo)) )
# user? system elapsed 
# 10.212?? 0.032? 10.265 
library(reshape2)
?system.time(res2 <- dcast(melt(within(dd,{id=row.names(dd)}),id.var="id"),id~value,length))
?#user? system elapsed 
?# 3.232?? 0.096?? 3.358 

system.time({idx<-sapply(strsplit(names(res2),split=""),anyDuplicated) 
?res4<-do.call(cbind,lapply(LETTERS[c(1,3,7,20)],function(i){rowSums(data.frame(rowSums(res2[idx==0][grep(i,names(res2)[idx==0])]),2*res2[idx!=0][grep(i,names(res2)[idx!=0])]))}))
?colnames(res4)<-LETTERS[c(1,3,7,20)]})
#?? user? system elapsed 
#? 0.168?? 0.000?? 0.171 

#Combined result
system.time({res2 <- dcast(melt(within(dd,{id=row.names(dd)}),id.var="id"),id~value,length)
idx<-sapply(strsplit(names(res2),split=""),anyDuplicated) 
?res4<-do.call(cbind,lapply(LETTERS[c(1,3,7,20)],function(i){rowSums(data.frame(rowSums(res2[idx==0][grep(i,names(res2)[idx==0])]),2*res2[idx!=0][grep(i,names(res2)[idx!=0])]))}))
?colnames(res4)<-LETTERS[c(1,3,7,20)]
res5<-data.frame(res2,res4)
})
# user? system elapsed 
#? 3.025?? 0.040?? 3.072 


head(res5,5)
#???? id AA AG CC CT GA GG GT TC TG TT? A C? G T
#1???? 1 29 10? 0? 0 13? 1? 0? 0? 0? 0 81 0 25 0
#2??? 10? 0? 4? 0? 0? 6 43? 0? 0? 0? 0 10 0 96 0
#3?? 100 19 15? 0? 0 15? 4? 0? 0? 0? 0 68 0 38 0
#4? 1000 19 15? 0? 0 15? 4? 0? 0? 0? 0 68 0 38 0
#5 10000 19 15? 0? 0 15? 4? 0? 0? 0? 0 68 0 38 0


system.time(res6<- table(rownames(dd)[row(dd)], unlist(dd)))
#?? user? system elapsed 
#? 4.840?? 0.016?? 4.899 
head(res6,5)
#?????? 
??????? AA AG CC CT GA GG GT TC TG TT
#? 1???? 29 10? 0? 0 13? 1? 0? 0? 0? 0
#? 10???? 0? 4? 0? 0? 6 43? 0? 0? 0? 0
#? 100?? 19 15? 0? 0 15? 4? 0? 0? 0? 0
#? 1000? 19 15? 0? 0 15? 4? 0? 0? 0? 0
#? 10000 19 15? 0? 0 15? 4? 0? 0? 0? 0

system.time({#rows would be:
test2<-apply(dat2[,-c(1:4)],1,function(x){table(t(x))})
#find single values in a row
res7<- sapply(test2,function(row){
??? allVars<-paste(names(row),collapse="")
??? u <- unique(strsplit(allVars,"")[[1]])
??? parts<-sapply(names(row),function(x){u%in%strsplit(x,"")[[1]]})
??? mat<-parts%*%row
??? rownames(mat)<-u
??? mat
})})
?#user? system elapsed 
?#21.553?? 0.000? 21.591 


A.K.


----- Original Message -----
From: Yao He <yao.h.1988 at gmail.com>
To: arun <smartpink111 at yahoo.com>
Cc: William Dunlap <wdunlap at tibco.com>; R help <r-help at r-project.org>
Sent: Wednesday, January 9, 2013 11:46 PM
Subject: Re: [R] how to count "A","C","T","G" in each row in a big data.frame?

Hi arun
Then how could spilt them and get a table of letters count such as:
? id AA AG CC CT GA GG GT TC TG TT
? ? ? ? ? ? ? id?  A T C G
Thanks

2013/1/10 arun <smartpink111 at yahoo.com>: