对于每一行,哪些列包含值

Froom2

我想查看每个响应的许多列,如果这些列中只有一个包含特定字符串,则将该列名称放入新列中。

示例数据框:

data <- structure(list(ParticipantID = 1:5, Usual = c("Pear", "Pear", 
"Apple", NA, NA), Pear_Freq = c("3 or more times a week", "3 or more times a week", 
"Once a week", "Once a week", "3 or more times a week"), Apple_Freq = c("Never", 
"Once a week", "3 or more times a week", "Never", "3 or more times a week"
), Peach_Freq = c("Once a week", "Never", "Never", "3 or more times a week", 
"Once a week")), .Names = c("ParticipantID", "Usual", "Pear_Freq", 
"Apple_Freq", "Peach_Freq"), class = "data.frame", row.names = c(NA, 
-5L))

因此,我希望能够摆脱它的是包含以下内容的新列:

ParticipantID   Newcol
1               Pear
2               Pear
3               Apple
4               Peach
5               NA

(作为检查人们的话语和所作所为是否匹配的一种方法,并在“常规”列中填写空白)

到目前为止,我有一些代码将计数添加到新的列中,这样我就可以选择每周仅在一列中勾选3次或更多(而不是2或0)的人:

test$tempcol <- NA
test$tempcol <- apply(test[,Freqcols], 1, function(x) sum(grepl("3 or more times a week", x)))

(我觉得我不需要用grepl这个,因为我确实希望匹配整个单元格而不是模式)

然后,我尝试使用来获取每个被调查者包含“每周3次或更多次”的列的索引,如下所示:

which(apply(test, 1, function(x) any(grepl("3 or more times a week", x))))

但是,当然,这只是告诉我,每个人至少每周讲3次或更多次。

然后我希望使用它来将列标题的Fruit位置粘贴到一个新的单元格中,但是我对如何实际到达该位置有点迷惑:(任何建议将不胜感激。

塔拉特

您可以尝试以下方法:

data$newcol <- apply(data[3:5], 1, function(x) 
   ifelse(length(which(x == "3 or more times a week")) != 1, NA,
   unlist(strsplit(names(data[3:5])[which(x == "3 or more times a week")], "_")))[1])

#  ParticipantID Usual              Pear_Freq             Apple_Freq             Peach_Freq newcol
#1             1  Pear 3 or more times a week                  Never            Once a week   Pear
#2             2  Pear 3 or more times a week            Once a week                  Never   Pear
#3             3 Apple            Once a week 3 or more times a week                  Never  Apple
#4             4  <NA>            Once a week                  Never 3 or more times a week  Peach
#5             5  <NA> 3 or more times a week 3 or more times a week            Once a week   <NA>

您将开始检查响应的频率为“每周3次或多次”,which如果响应出现的次数多于或少于一次,您将返回NA如果仅发生一次,which则将告诉您发生它的列的索引,并names(data[3:5])用于查找匹配的列名。要仅获得名称的水果位,请将其除以“ _”(unlist结果列表),并仅使用其第一位写入新列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对于每一行,查找以前的行是否包含更高的值

来自分类Dev

对于每一行,查找列中具有相同值的所有行

来自分类Dev

对于每一行,返回列索引和非NA值的名称

来自分类Dev

对于每一行,查找最接近指定值的列

来自分类Dev

对于包含数据的每一行,每个类别都需要一行

来自分类Dev

如何与熊猫循环:“对于文件中的每一行,对于每一行中的列”

来自分类Dev

UPDATE列,其中不包含PL / SQL的oracle中每一行的最大值

来自分类Dev

如果某列包含某个值,如何检查大型csv的每一行并写入该行?

来自分类Dev

对于每一行,输出具有最高值的前5列的列名,但忽略0

来自分类Dev

jquery - 对于包含字符串禁用按钮的每一行

来自分类Dev

对于Y列中每一行的长度,X列中的重复行

来自分类Dev

将每一行的值除以该列的SUM

来自分类Dev

为矩阵的每一行设置特定列的值

来自分类Dev

遍历每一行并比较数据框的列值

来自分类Dev

组中每一行的熊猫条件列值

来自分类Dev

从列的每一行中删除特定值

来自分类Dev

根据每一行中的值获取列标题

来自分类Dev

对于每一行,将特定列(由另一个数据框定义)中的值替换为向量中的值

来自分类Dev

Visual Basic遍历每一行并将每一行的第一列的值写入不同的标签

来自分类Dev

将列中包含逗号的列中的每一行拆分为转置行

来自分类Dev

访问每一行并检查数据框中的每一列值

来自分类Dev

如何对html表的每一行和每一列的值求和

来自分类Dev

优化 - 返回数组中小于单元格值的第一个值(对于每一行)

来自分类Dev

对于每一行,保存到json

来自分类Dev

Firebird“对于每一行”触发语法

来自分类Dev

从每一行的第一行打印值

来自分类Dev

向R中的数据框添加一个新列,该列包含每一行中最频繁的值

来自分类Dev

Slickgrid使用一列包含每一行的颜色?

来自分类Dev

VBA 对于 Excel,尝试获取范围内每一行的最大值/最小值。

Related 相关文章

  1. 1

    对于每一行,查找以前的行是否包含更高的值

  2. 2

    对于每一行,查找列中具有相同值的所有行

  3. 3

    对于每一行,返回列索引和非NA值的名称

  4. 4

    对于每一行,查找最接近指定值的列

  5. 5

    对于包含数据的每一行,每个类别都需要一行

  6. 6

    如何与熊猫循环:“对于文件中的每一行,对于每一行中的列”

  7. 7

    UPDATE列,其中不包含PL / SQL的oracle中每一行的最大值

  8. 8

    如果某列包含某个值,如何检查大型csv的每一行并写入该行?

  9. 9

    对于每一行,输出具有最高值的前5列的列名,但忽略0

  10. 10

    jquery - 对于包含字符串禁用按钮的每一行

  11. 11

    对于Y列中每一行的长度,X列中的重复行

  12. 12

    将每一行的值除以该列的SUM

  13. 13

    为矩阵的每一行设置特定列的值

  14. 14

    遍历每一行并比较数据框的列值

  15. 15

    组中每一行的熊猫条件列值

  16. 16

    从列的每一行中删除特定值

  17. 17

    根据每一行中的值获取列标题

  18. 18

    对于每一行,将特定列(由另一个数据框定义)中的值替换为向量中的值

  19. 19

    Visual Basic遍历每一行并将每一行的第一列的值写入不同的标签

  20. 20

    将列中包含逗号的列中的每一行拆分为转置行

  21. 21

    访问每一行并检查数据框中的每一列值

  22. 22

    如何对html表的每一行和每一列的值求和

  23. 23

    优化 - 返回数组中小于单元格值的第一个值(对于每一行)

  24. 24

    对于每一行,保存到json

  25. 25

    Firebird“对于每一行”触发语法

  26. 26

    从每一行的第一行打印值

  27. 27

    向R中的数据框添加一个新列,该列包含每一行中最频繁的值

  28. 28

    Slickgrid使用一列包含每一行的颜色?

  29. 29

    VBA 对于 Excel,尝试获取范围内每一行的最大值/最小值。

热门标签

归档