我见过很多提取 w/ 的迭代,gsub但它们主要处理从左到右或在一次发生后提取。我想从右到左匹配,计算 4 次出现-,匹配第 3 次和第 4 次出现之间的所有内容。
例如:
string outcome
here-are-some-words-to-try some
a-b-c-d-e-f-g-h-i f
Run Code Online (Sandbox Code Playgroud)
以下是我尝试使用的一些参考资料:
我在数据框中有一个列列表,我想在其中检查所有这些列是否存在NA并创建一个新列来告诉我它们是否NA存在。
这是一个使用一列的示例,Any_Flag我的新列在哪里:
ItemStats_2014$Any_Flag <- ifelse(is.na(ItemStats_2014$Item_Flag_A), "Y", "N")
Run Code Online (Sandbox Code Playgroud)
当我尝试在多个列上运行检查时,我得到了我期望的结果:
ItemStats_2014$Any_Flag <- ifelse(all(is.na(ItemStats_2014[ ,grep("Flag", names(ItemStats_2014), value = T)])), "Y", "N")
Run Code Online (Sandbox Code Playgroud)
它将所有内容返回为 false 或“N”。
我正在尝试openxlsx根据该行的列中的文本填充 Excel 工作簿中的一行。例如,如果单元格C3包含A,则突出显示第 3 行。
理想情况下,这不会是conditionalFormatting。我希望它是基于单元格中文本的行的实际颜色,但conditionalFormatting似乎是唯一的选择。如果我能把它变成实际的颜色,请告诉我。
下面的代码显示您可以根据value该行中的单元格突出显示一行,但如果您尝试使用文本则不能。此外,如果type设置为contains那么它似乎不接受任何样式。
wb <- createWorkbook()
addWorksheet(wb, "Dependent on")
addWorksheet(wb, "containsText")
negStyle <- createStyle(fontColour = "#9C0006", bgFill = "#FFC7CE")
posStyle <- createStyle(fontColour = "#006100", bgFill = "#C6EFCE")
## highlight row based on value in column 2
writeData(wb, "Dependent on", data.frame(x = 1:10, y = runif(10)), startRow = 15)
conditionalFormatting(wb, "Dependent on", cols=1:2, rows=16:25, rule="$B16<0.5", style = negStyle)
conditionalFormatting(wb, "Dependent on", …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用kable并kableextra创建一个具有不同分组标题但子标题中具有相同列名的表
例如,如果您查看Create Awesome LaTeX Table with knit::kable 和 kableExtra的“分组列/标题”部分(第 14 页) ,它会被分组,但子标题名称不同:
library(knitr)
library(kableExtra)
dt <- mtcars[1:5, 1:6]
kable(dt, "latex", booktabs = T) %>%
kable_styling() %>%
add_header_above(c(" " = 1, "Group 1" = 2, "Group 2" = 2, "Group 3" = 2))
Run Code Online (Sandbox Code Playgroud)
我想做的是将汽车作为组进行类似的操作(例如仅使用两辆车):
Mazda RX4 | Datsun 710
----------------------
mpg | cyl | mpg | cyl
----------------------
21.0| 6 | 21.4| 6
Run Code Online (Sandbox Code Playgroud)
或者作为另一个例子:
Group 1 | Group 2
------------------
x | y | x …Run Code Online (Sandbox Code Playgroud) 我正在尝试为每列创建一个列类型和唯一变量的数据框。
我能够使用 获得所需数据帧格式的列类型map(df, class) %>% bind_rows() %>% gather(key = col_name, value = col_class),但无法使唯一变量成为数据帧而不是列表。
下面是一个小数据框和代码,用于获取列表中的唯一变量,但不是数据框。理想情况下,我可以在一个(地图)函数中执行此操作,但是如果我必须加入它们,那也没什么大不了的。
df <- data.frame(v1 = c(1,2,3,2), v2 = c("a","a","b","b"))
library(tidyverse)
map(df, class) %>% bind_rows() %>% gather(key = col_name, value = col_class)
map(df, unique)
Run Code Online (Sandbox Code Playgroud)
当我尝试用同样的方法在map(df, unique)作为上map(df, class)我得到以下错误:Error: Argument 2 must be length 3, not 2预计,但我不知道怎么去解决它。
在 R 中,使用dplyr我想为每个组过滤大于一个日期。
下面给了我结果,但我想知道是否有更优雅的方法来获得同样的东西。是否可以在不使用的情况下进行过滤mutate?
max_dates <- data.frame(col_1 = c('a', 'b', 'c'), max_date = c('2021-08-23', '2021-07-19', '2021-07-02'))
df <- data.frame(col_1 = c(rep('a', 10), rep('b', 10), rep('c', 10)),
date = rep(seq(as.Date('2021-07-01'), by = 'week', length.out = 10), 3))
desired_df <- df %>%
left_join(max_dates, by = 'col_1') %>%
mutate(greater_than = ifelse(date >= max_date, T, F)) %>%
filter(greater_than)
Run Code Online (Sandbox Code Playgroud)