我正在尝试应用行选择,但需要使用字符串变量的第一个单词来完成。所以我可以选择该行的第一次出现。
我试过这样的话:(substr(aux$AIO[1], start =1, stop = 7)=="Neutral")
但是它只选择数据集的第一个主题的所有匹配项,而不是所有主题的第一个主题。
这基本上是数据和想法的工作原理:
ID Attempt Type Time
1 1 Neutral lotion 10
1 1 Acid lotion 15
1 2 Neutral lotion 8
1 2 Sweet lotion 17
2 1 Neutral lotion 11
2 1 Acid lotion 13
2 2 Neutral lotion 9
2 2 Sweet lotion 15
我需要为每个ID和每个ID的每个试验选择中性条件的第一次出现,这样我就可以减去酸性和甜味条件下的中性条件下的时间消耗。
答案 0 :(得分:0)
这应该可以帮助您入门。
test <- c('This is a test.', 'Neutral Density', 'Cool cucumber.')
library(stringr)
ans <- str_match(test, '^\\w+\\b')
ans
# [,1]
#[1,] "This"
#[2,] "Neutral"
#[3,] "Cool"
which(ans[,1] == 'Neutral')
#[1] 2
答案 1 :(得分:0)
使用dplyr
:
library(dplyr)
df <- data.frame('ID' = c(1,1,1,1,2,2,2,2), 'Attempt' = c(1,1,2,2,1,1,2,2),
'Type' = c('Neutral lotion', 'Acid lotion', 'Neutral lotion',
'Sweet lotion', 'Neutral lotion', 'Acid lotion',
'Neutral lotion', 'Sweet lotion'),
'Time' = c(10, 15, 8, 17, 11, 13, 9, 15), stringsAsFactors = FALSE)
df %>%
group_by(ID, Attempt) %>%
slice(which(Type == 'Neutral lotion')[1])
哪个收益
# A tibble: 4 x 4
# Groups: ID, Attempt [4]
ID Attempt Type Time
<dbl> <dbl> <chr> <dbl>
1 1 1 Neutral lotion 10
2 1 2 Neutral lotion 8
3 2 1 Neutral lotion 11
4 2 2 Neutral lotion 9