R将特定的行和列乘以常数
Posted
技术标签:
【中文标题】R将特定的行和列乘以常数【英文标题】:R Multiply specific rows and columns by constant 【发布时间】:2022-01-14 13:03:14 【问题描述】:我有以下数据:
type <- c(1:4)
year1 <- c(1:4)
year2 <- c(1:4)
year3 <- c(1:4)
data <- data.frame(type, year1, year2, year3)
我想将 Year 列中的底部两行乘以 2。
type <- c(1:4)
year1 <- c(1, 2, 6, 8)
year2 <- c(1, 2, 6, 8)
year3 <- c(1, 2, 6, 8)
final <- data.frame(type, year1, year2, year3)
如何在不影响其他列的行的情况下执行此操作?
【问题讨论】:
data[3:4,]*2
?
data[3:4, -1] <- 2 * data[3:4, -1]
一个非常灵活的方法是:data[(nrow(data)-1):nrow(data),]<- data[(nrow(data)-1):nrow(data),grep(pattern="year",x=names(data))]*2
【参考方案1】:
如果您不知道数据的长度,并且想要将所有包含“年份”的列相乘,您可以这样做:
data[(nrow(data)-1):nrow(data),]<-data[(nrow(data)-1):nrow(data),grep(pattern="year",x=names(data))]*2
type year1 year2 year3
1 1 1 1 1
2 2 2 2 2
3 6 6 6 6
4 8 8 8 8
【讨论】:
【参考方案2】:这是使用dplyr
和tidyr
的解决方案。这将允许您根据需要调整参数。
library(dplyr)
library(tidyr)
newdata <- data %>%
gather(., year, value, year1:year3) %>%
mutate(newvalue = ifelse(type > 2, value * 2, value)) %>%
select(-value) %>%
spread(., year, newvalue)
【讨论】:
以上是关于R将特定的行和列乘以常数的主要内容,如果未能解决你的问题,请参考以下文章
r shiny - DataTableOutput - 颜色特定的行和列