Yep, that works. Thanks, Stephen. I should have drawn the parallel with Excel Pivot tables sooner.
On Tue, Sep 1, 2015 at 9:36 AM, stephen sefick <ssef...@gmail.com> wrote: > I would make this minimal. In other words, use an example data set, dput, > and use output of dput in a block of reproducible code. I don't understand > exactly what you want, but does sum work? If there is more than one record > for a given set of factors the sum is the sum of the counts. If only one > record, then the sum is the same as the original number. > > On Tue, Sep 1, 2015 at 10:00 AM, Matthew Pickard < > matthew.david.pick...@gmail.com> wrote: > >> Thanks, Stephen. I've looked into the fun.aggregate argument. I don't >> want to aggregate, so I thought leaving it blank (allowing it to default to >> NULL) would do that. >> >> >> Here's a corrected post (with further explanation): >> >> Hi, >> >> I have data that looks like this: >> >> >dput(head(ratings)) >> structure(list(QCode = structure(c(5L, 7L, 5L, 7L, 5L, 7L), .Label = >> c("APPEAR", >> "FEAR", "FUN", "GRAT", "GUILT", "Joy", "LOVE", "UNGRAT"), class = >> "factor"), >> PID = structure(c(1L, 1L, 2L, 2L, 3L, 3L), .Label = c("1123", >> "1136", "1137", "1142", "1146", "1147", "1148", "1149", "1152", >> "1153", "1154", "1156", "1158", "1161", "1164", "1179", "1182", >> "1183", "1191", "1196", "1197", "1198", "1199", "1200", "1201", >> "1203", "1205", "1207", "1208", "1209", "1214", "1216", "1219", >> "1220", "1222", "1223", "1224", "1225", "1226", "1229", "1236", >> "1237", "1238", "1240", "1241", "1243", "1245", "1246", "1248", >> "1254", "1255", "1256", "1257", "1260", "1262", "1264", "1268", >> "1270", "1272", "1278", "1279", "1280", "1282", "1283", "1287", >> "1288", "1292", "1293", "1297", "1310", "1311", "1315", "1329", >> "1332", "1333", "1343", "1346", "1347", "1352", "1354", "1355", >> "1356", "1360", "1368", "1369", "1370", "1378", "1398", "1400", >> "1403", "1404", "1411", "1412", "1420", "1421", "1423", "1424", >> "1426", "1428", "1432", "1433", "1435", "1436", "1438", "1439", >> "1440", "1441", "1443", "1444", "1446", "1447", "1448", "1449", >> "1450", "1453", "1454", "1456", "1459", "1460", "1461", "1462", >> "1463", "1468", "1471", "1475", "1478", "1481", "1482", "1487", >> "1488", "1490", "1493", "1495", "1497", "1503", "1504", "1508", >> "1509", "1511", "1513", "1514", "1515", "1522", "1524", "1525", >> "1526", "1527", "1528", "1529", "1532", "1534", "1536", "1538", >> "1539", "1540", "1543", "1550", "1551", "1552", "1554", "1555", >> "1556", "1558", "1559"), class = "factor"), RaterName = >> structure(c(1L, >> 1L, 1L, 1L, 1L, 1L), .Label = c("cwormhoudt", "zspeidel"), class = >> "factor"), >> SI1 = c(2L, 1L, 1L, 1L, 2L, 1L), SI2 = c(2L, 2L, 2L, 2L, >> 2L, 3L), SI3 = c(3L, 3L, 3L, 3L, 2L, 4L), SI4 = c(1L, 2L, >> 1L, 1L, 1L, 1L), SI5 = c(1L, 1L, 1L, 1L, 1L, 1L), SI6 = c(1L, >> 1L, 1L, 1L, 1L, 1L), SI7 = c(3L, 1L, 2L, 1L, 2L, 1L), SI8 = c(3L, >> 1L, 3L, 1L, 3L, 1L), SI9 = c(3L, 1L, 2L, 1L, 1L, 1L), SI10 = c(2L, >> 1L, 2L, 1L, 2L, 1L), SI11 = c(1L, 3L, 1L, 2L, 1L, 4L)), .Names = >> c("QCode", >> "PID", "RaterName", "SI1", "SI2", "SI3", "SI4", "SI5", "SI6", >> "SI7", "SI8", "SI9", "SI10", "SI11"), row.names = c(NA, 6L), class = >> "data.frame") >> >> >> > dput(tail(ratings)) >> structure(list(QCode = structure(c(3L, 3L, 3L, 1L, 1L, 3L), .Label = >> c("APPEAR", >> "FEAR", "FUN", "GRAT", "GUILT", "Joy", "LOVE", "UNGRAT"), class = >> "factor"), >> PID = structure(c(161L, 162L, 163L, 163L, 164L, 164L), .Label = >> c("1123", >> "1136", "1137", "1142", "1146", "1147", "1148", "1149", "1152", >> "1153", "1154", "1156", "1158", "1161", "1164", "1179", "1182", >> "1183", "1191", "1196", "1197", "1198", "1199", "1200", "1201", >> "1203", "1205", "1207", "1208", "1209", "1214", "1216", "1219", >> "1220", "1222", "1223", "1224", "1225", "1226", "1229", "1236", >> "1237", "1238", "1240", "1241", "1243", "1245", "1246", "1248", >> "1254", "1255", "1256", "1257", "1260", "1262", "1264", "1268", >> "1270", "1272", "1278", "1279", "1280", "1282", "1283", "1287", >> "1288", "1292", "1293", "1297", "1310", "1311", "1315", "1329", >> "1332", "1333", "1343", "1346", "1347", "1352", "1354", "1355", >> "1356", "1360", "1368", "1369", "1370", "1378", "1398", "1400", >> "1403", "1404", "1411", "1412", "1420", "1421", "1423", "1424", >> "1426", "1428", "1432", "1433", "1435", "1436", "1438", "1439", >> "1440", "1441", "1443", "1444", "1446", "1447", "1448", "1449", >> "1450", "1453", "1454", "1456", "1459", "1460", "1461", "1462", >> "1463", "1468", "1471", "1475", "1478", "1481", "1482", "1487", >> "1488", "1490", "1493", "1495", "1497", "1503", "1504", "1508", >> "1509", "1511", "1513", "1514", "1515", "1522", "1524", "1525", >> "1526", "1527", "1528", "1529", "1532", "1534", "1536", "1538", >> "1539", "1540", "1543", "1550", "1551", "1552", "1554", "1555", >> "1556", "1558", "1559"), class = "factor"), RaterName = >> structure(c(2L, >> 2L, 2L, 2L, 2L, 2L), .Label = c("cwormhoudt", "zspeidel"), class = >> "factor"), >> SI1 = c(1L, 1L, 1L, 1L, 1L, 1L), SI2 = c(3L, 2L, 2L, 3L, >> 3L, 2L), SI3 = c(3L, 2L, 3L, 3L, 3L, 2L), SI4 = c(1L, 1L, >> 1L, 1L, 1L, 1L), SI5 = c(1L, 1L, 1L, 1L, 1L, 1L), SI6 = c(1L, >> 1L, 1L, 1L, 1L, 1L), SI7 = c(1L, 1L, 1L, 2L, 2L, 1L), SI8 = c(1L, >> 1L, 1L, 1L, 1L, 1L), SI9 = c(1L, 1L, 1L, 1L, 1L, 1L), SI10 = c(1L, >> 1L, 1L, 2L, 2L, 1L), SI11 = c(1L, 1L, 1L, 1L, 1L, 1L)), .Names = >> c("QCode", >> "PID", "RaterName", "SI1", "SI2", "SI3", "SI4", "SI5", "SI6", >> "SI7", "SI8", "SI9", "SI10", "SI11"), row.names = 2456:2461, class = >> "data.frame") >> >> >> I am trying to use the melt and cast functions to re-arrange to have >> column names QCode, PID, sItem, cwormhoudt, zpeidel. Under each of the >> last two columns I want the values that correspond to each of RaterNames. >> >> So, I melt the data like this: >> >> mratings = melt(ratings, variable_name="sItem") >> >> Then cast the data like this: >> >> > outData = cast(mratings, QCode + PID + sItem ~ RaterName) >> Aggregation requires fun.aggregate: length used as default >> >> But the value columns appear to be displaying counts and not the original >> values. >> >> > dput(head(outData)) >> structure(list(QCode = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = >> c("APPEAR", >> "FEAR", "FUN", "GRAT", "GUILT", "Joy", "LOVE", "UNGRAT"), class = >> "factor"), >> PID = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("1123", >> "1136", "1137", "1142", "1146", "1147", "1148", "1149", "1152", >> "1153", "1154", "1156", "1158", "1161", "1164", "1179", "1182", >> "1183", "1191", "1196", "1197", "1198", "1199", "1200", "1201", >> "1203", "1205", "1207", "1208", "1209", "1214", "1216", "1219", >> "1220", "1222", "1223", "1224", "1225", "1226", "1229", "1236", >> "1237", "1238", "1240", "1241", "1243", "1245", "1246", "1248", >> "1254", "1255", "1256", "1257", "1260", "1262", "1264", "1268", >> "1270", "1272", "1278", "1279", "1280", "1282", "1283", "1287", >> "1288", "1292", "1293", "1297", "1310", "1311", "1315", "1329", >> "1332", "1333", "1343", "1346", "1347", "1352", "1354", "1355", >> "1356", "1360", "1368", "1369", "1370", "1378", "1398", "1400", >> "1403", "1404", "1411", "1412", "1420", "1421", "1423", "1424", >> "1426", "1428", "1432", "1433", "1435", "1436", "1438", "1439", >> "1440", "1441", "1443", "1444", "1446", "1447", "1448", "1449", >> "1450", "1453", "1454", "1456", "1459", "1460", "1461", "1462", >> "1463", "1468", "1471", "1475", "1478", "1481", "1482", "1487", >> "1488", "1490", "1493", "1495", "1497", "1503", "1504", "1508", >> "1509", "1511", "1513", "1514", "1515", "1522", "1524", "1525", >> "1526", "1527", "1528", "1529", "1532", "1534", "1536", "1538", >> "1539", "1540", "1543", "1550", "1551", "1552", "1554", "1555", >> "1556", "1558", "1559"), class = "factor"), sItem = structure(1:6, >> .Label = c("SI1", >> "SI2", "SI3", "SI4", "SI5", "SI6", "SI7", "SI8", "SI9", "SI10", >> "SI11"), class = "factor"), cwormhoudt = c(1L, 1L, 1L, 1L, >> 1L, 1L), zspeidel = c(1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("QCode", >> "PID", "sItem", "cwormhoudt", "zspeidel"), row.names = c(NA, >> 6L), class = "data.frame") >> >> The correct output would have 3s, 4s, and 5s in the RaterName columns: >> >> > which(outData$zpeidel==3) >> integer(0) >> >> I don't want it to aggregate the data, I simply want it to insert the >> original values into the two RaterName columns. In cast, the fun.aggregate >> defaults to NULL, which I assumed was no function. But the output says it >> uses length as default. >> >> How to I prevent cast from aggregating the data according to counts? Am >> I doing something wrong? >> >> Thanks in advance. >> >> >> On Mon, Aug 31, 2015 at 11:32 PM, stephen sefick <ssef...@gmail.com> >> wrote: >> >>> This is very hard to read. Please use dput to provide data. I believe >>> the answer is in the manual. Look at the aggregation function argument. >>> >>> Please excuse my brevity; this message was sent from my telephone. >>> On Sep 1, 2015 12:11 AM, "Matt Pickard" <matthew.david.pick...@gmail.com> >>> wrote: >>> >>>> Hi, >>>> >>>> I have data that looks like this: >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> *> head(ratings) QCode PID RaterName SI1 SI2 SI3 SI4 SI5 SI6 SI7 SI8 >>>> SI9 >>>> SI10 SI111 GUILT 1123 cwormhoudt 2 2 3 1 1 1 3 3 3 >>>> 2 12 LOVE 1123 cwormhoudt 1 2 3 2 1 1 1 1 1 1 >>>> 33 GUILT 1136 cwormhoudt 1 2 3 1 1 1 2 3 2 2 14 >>>> LOVE 1136 cwormhoudt 1 2 3 1 1 1 1 1 1 1 25 >>>> GUILT >>>> 1137 cwormhoudt 2 2 2 1 1 1 2 3 1 2 16 LOVE >>>> 1137 >>>> cwormhoudt 1 3 4 1 1 1 1 1 1 1 4* >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> *> tail(ratings) QCode PID RaterName SI1 SI2 SI3 SI4 SI5 SI6 SI7 >>>> SI8 >>>> SI9 SI10 SI112456 FUN 1555 zspeidel 1 3 3 1 1 1 1 1 >>>> 1 1 12457 FUN 1556 zspeidel 1 2 2 1 1 1 1 1 >>>> 1 1 12458 FUN 1558 zspeidel 1 2 3 1 1 1 1 1 >>>> 1 1 12459 APPEAR 1558 zspeidel 1 3 3 1 1 1 2 1 >>>> 1 2 12460 APPEAR 1559 zspeidel 1 3 3 1 1 1 2 1 >>>> 1 2 12461 FUN 1559 zspeidel 1 2 2 1 1 1 1 1 >>>> 1 1 1* >>>> I am trying to use the melt and cast functions to re-arrange it to look >>>> like this: >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> * QCode PID sItem cwormhoudt zspeidel1 APPEAR 1123 SI1 >>>> 1 12 APPEAR 1123 SI2 4 13 APPEAR 1123 >>>> SI3 1 24 APPEAR 1123 SI4 3 15 APPEAR >>>> 1123 SI5 1 16 APPEAR 1123 SI6 1 3* >>>> So, I melt the data like this: >>>> >>>> >>>> >>>> *mratings = melt(ratings, variable_name="sItem")* >>>> Then cast the data like this: >>>> >>>> >>>> *> outData = cast(mratings, QCode + PID + sItem ~ RaterName)Aggregation >>>> requires fun.aggregate: length used as default* >>>> >>>> But the value columns appear to be displaying counts and not the >>>> original >>>> values: >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> *> head(outData) QCode PID sItem cwormhoudt zspeidel1 APPEAR 1123 >>>> SI1 1 12 APPEAR 1123 SI2 1 13 APPEAR >>>> 1123 SI3 1 14 APPEAR 1123 SI4 1 15 >>>> APPEAR 1123 SI5 1 16 APPEAR 1123 SI6 1 >>>> 1> which(outData$zpeidel==3)integer(0)* >>>> How to I prevent cast from aggregating the data according to counts? >>>> Am I >>>> doing something wrong? >>>> >>>> Thanks in advance. >>>> >>>> MP >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> ______________________________________________ >>>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>> PLEASE do read the posting guide >>>> http://www.R-project.org/posting-guide.html >>>> and provide commented, minimal, self-contained, reproducible code. >>>> >>> >> > > > -- > Stephen Sefick > ************************************************** > Auburn University > Biological Sciences > 331 Funchess Hall > Auburn, Alabama > 36849 > ************************************************** > sas0...@auburn.edu > http://www.auburn.edu/~sas0025 > ************************************************** > > Let's not spend our time and resources thinking about things that are so > little or so large that all they really do for us is puff us up and make us > feel like gods. We are mammals, and have not exhausted the annoying little > problems of being mammals. > > -K. Mullis > > "A big computer, a complex algorithm and a long time does not equal > science." > > -Robert Gentleman > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.