【问题标题】:count number of times string appears in a column计算字符串在列中出现的次数
【发布时间】:2020-12-10 05:00:49
【问题描述】:

你能想出一种直观的方法来计算单词空间在某列中出现的次数吗?或任何其他可行的解决方案。 我基本上想知道按了多少次空格键,但是有些参与者犯了错误并按下了其他键,这也被认为是错误的。所以我想知道我是否应该改用“key_resp.rt”列并计算响应时间的数量。如果您知道如何同时使用这两种方法,那就太好了,因为我可能需要同时使用这两种方法。

我使用了以下代码,但结果与数据不符。

 Data %>% group_by(Participant, Session) %>% summarise(false_start = sum(str_count(key_resp.keys, "space")))

这是我的数据的 sn-p:

    Participant    RT     Session   key_resp.keys           key_resp.rt
       X        0.431265    1       ["space"]            [2.3173399999941466]
       X        0.217685    1           
       X        0.317435    2       ["space","space"] [0.6671900000001187,2.032510000000002]    2020.1.3    4
       Y        0.252515    1       
       Y        0.05127     2   ["space","space","space","space","space","space","space","space","space"]   [4.917419999999765,6.151149999999689,6.333714999999771,6.638249999999971,6.833514999999338,7.0362499999992,7.217724999999504,7.38576999999988,7.66913999999997]
dput(droplevels(head(Data_PVT)))
structure(list(Interval_stimulus = c(4.157783411, 4.876139922, 
5.67011868, 9.338167417, 9.196342656, 7.62448411), Participant = structure(c(1L, 
1L, 1L, 1L, 1L, 1L), .Label = "ADH80254", class = "factor"), 
    RT = c(431.265, 277.99, 253.515, 310.53, 299.165, 539.46), 
    Session = c(1L, 1L, 1L, 1L, 1L, 1L), date = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L), .Label = "2020-06-12_11h11.47.141", class = "factor"), 
    key_resp.keys = structure(c(2L, 1L, 1L, 1L, 1L, 1L), .Label = c("", 
    "[\"space\"]"), class = "factor"), key_resp.rt = structure(c(2L, 
    1L, 1L, 1L, 1L, 1L), .Label = c("", "[2.3173399999941466]"
    ), class = "factor"), psychopyVersion = structure(c(1L, 1L, 
    1L, 1L, 1L, 1L), .Label = "2020.1.3", class = "factor"), 
    Trials = 0:5, Reciprocal = c(2.31875992719094, 3.59725169970143, 
    3.94453977082224, 3.22030077609249, 3.3426370063343, 1.85370555740926
    )), row.names = c(NA, 6L), class = "data.frame")

预期输出:

Participant  Session  false_start
   x             1       0
   x             2       1
   y             1       2
   y             2       1
   z             1       10
   z             2       3

【问题讨论】:

  • 好吧,我不知道如何重现这个。 key_resp.keys 列要么没有任何内容(如果没有按下任何键,["space"] 如果按下一次键,或者 ["space", "space",...] 按下多少次. 不知道如何重现。Key_resp.rt 遵循相同的逻辑并以相同的格式显示响应时间。抱歉,我无法提供更多帮助。
  • 对不起,格式很糟糕,不知道如何使它更好。
  • 我只是放了一点,会话 1 和会话 2 会有条目。
  • 刚刚添加了您要求的信息。
  • 除了“请提供可重现的问题”以外的任何内容都在鼓励另一个坏问题。

标签: r dataframe summarize


【解决方案1】:

我们可以使用str_count 计算每个ParticipantSessionsum"space" 值以获得总数。对于all_false_start,我们计算其中的单词数。

library(dplyr)
library(stringr)

df %>%
  group_by(Participant, Session) %>%
  summarise(false_start = sum(str_count(key_resp.keys, '\\bspace\\b')), 
            all_false_start = sum(str_count(key_resp.keys, '\\b\\w+\\b')))

【讨论】:

  • 但我想知道他们按了多少次空格。
  • 你如何定义“压力空间”?
  • 好吧,如果我们说的是只按“空格”键,那么它就是每行中出现的单词空格的次数。如果我们谈论的是所有按键,那么它将是变量 key_resp.rt 中的响应次数
  • 不,我们正在讨论您要计算的内容。我对此感到困惑。您共享的示例没有足够的观察结果来匹配您的预期输出。您可以删除问题不需要的其他列,并与预期输出共享更多行的dput,以便问题变得清晰。
  • 这就是为什么我试图在“数据的 sn-p”中生成一些必要列的样本。这就是它的样子,但每个参与者的行数更多。
猜你喜欢
  • 2022-01-06
  • 2019-06-03
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
相关资源
最近更新 更多