Это может сработать для вас (GNU sed):
sed -si '/#include/{s//& "newfile.h\n&/;:a;$!{n;ba}}' file1 file2 file....
или если память не является проблемой:
sed -si ':a;$!{N;ba};s/#include/& "newfile.h\n&/' file1 file2 file...
Минимальное решение, которое вы хотите, действительно существует в базе R.
Рассмотрим эти данные.
> head(dat, 3)
Categories time.a time.b.
1 Category1 98.59 90.05
2 Category2 133.10 150.26
3 Category3 22.04 75.15
Участок:
barplot(t(dat[-1]), beside=TRUE, ylab="time")
Доходность
[119] [1115 ]
Затем вы можете уточнить его, как хотите, например,
rownames(dat) <- 1:10
barplot(t(dat[-1]), beside=TRUE, xlab="Categories", ylab="time", col=2:3)
legend("topleft", c("time a", "time b"), col=2:3, pch=15)
, что дает
Данные
dat <- structure(list(Categories = structure(c(1L, 3L, 4L, 5L, 6L, 7L,
8L, 9L, 10L, 2L), .Label = c("Category1", "Category10", "Category2",
"Category3", "Category4", "Category5", "Category6", "Category7",
"Category8", "Category9"), class = "factor"), time.a = c(98.59,
133.1, 22.04, 10.24, 17.12, 78.21, 115.41, 76.84, 176.09, 73.02
), time.b. = c(90.05, 150.26, 75.15, 7.07, 1.85, 49.03, 7.41,
152.89, 139.64, 90.98)), class = "data.frame", row.names = c(NA,
-10L))
R - надежный язык, и он может создавать очень богатые визуализации. Вся эта мощь означает, что у пользователя должно быть больше рычагов, чтобы тянуть, чтобы произвести желаемую визуализацию, которая усиливает кривую обучения. Это усугубляется тем фактом, что самая популярная библиотека визуализации R (ggplot) разработана таким образом, что может показаться странным людям, приходящим из более объектно-ориентированных языков или из программ электронных таблиц.
Я произвел что-то вроде того, что, я думаю, ты хочешь.
df <- data.frame(cat=c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6", "cat1", "cat2", "cat3", "cat4", "cat5", "cat6"),
time_type=c("a","a","a","a","a","a","b","b","b","b","b","b"),
time=c(12.7, 16, 8.6, 13.4, 7.3, 5.5, 6.8, 15, 33, 4.2, 10, 29.5))
head(df)
cat time_type time
1 cat1 a 12.7
2 cat2 a 16.0
3 cat3 a 8.6
4 cat4 a 13.4
5 cat5 a 7.3
6 cat6 a 5.5
7 cat1 b 6.8
8 cat2 b 15
9 cat3 b 33
10 cat4 b 4.2
11 cat5 b 10
12 cat6 b 29.5
и для построения графика
ggplot(data=df, aes(x=cat, y=time, fill=time_type)) +
geom_bar(stat="identity", position=position_dodge())
редактировать:
И вы можете создать этот фрейм данных из вашего исходного фрейма данных, как этот
df2 <- data.frame(cat=c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6"),
time_a=c(12.7, 16, 8.6, 13.4, 7.3, 5.5),
time_b=c(6.8, 15, 33, 4.2, 10, 29.5))
head(df2)
cat time_a time_b
1 cat1 12.7 6.8
2 cat2 16.0 15.0
3 cat3 8.6 33.0
4 cat4 13.4 4.2
5 cat5 7.3 10.0
6 cat6 5.5 29.5
И оттуда, вы можете просто растопить ваш фрейм данных так: ]