R循环通过列
如何循环数据框中的列并将值限制在该列的97.5%处 例如,如果一个特定列中填充了值1到100,则值>97.5,即98、99和100都应为97.5R循环通过列,r,loops,dataframe,cap,R,Loops,Dataframe,Cap,如何循环数据框中的列并将值限制在该列的97.5%处 例如,如果一个特定列中填充了值1到100,则值>97.5,即98、99和100都应为97.5 请看,我想对数据框中的第4列执行此操作 这里有一个关于您正在尝试做什么的最小示例。在这里,我将修改最后两列: set.seed(2) library(data.table) df <- data.table(a = runif(10, 90, 100), b = runif(10, 95, 105),
请看,我想对数据框中的第4列执行此操作 这里有一个关于您正在尝试做什么的最小示例。在这里,我将修改最后两列:
set.seed(2)
library(data.table)
df <- data.table(a = runif(10, 90, 100),
b = runif(10, 95, 105),
c = runif(10, 90, 100))
df[,c('b','c') := lapply(.SD, function(x) pmin(x, quantile(x, 0.975))), .SDcols = c('b','c')]
print(df)
a b c
1: 91.82174 103.40371 99.49889
2: 93.60763 104.45268 91.01073
3: 99.03800 95.44965 92.56751
4: 93.94048 102.58383 98.95147
5: 97.79881 97.96888 93.87944
6: 92.84159 101.51054 97.94285
7: 98.53721 95.84990 93.49397
8: 91.72242 104.68683 91.38744
9: 90.79264 95.13625 96.50509
10: 92.92065 100.38869 95.44004
set.seed(2)
库(数据表)
df这里有一个关于您尝试做什么的最小示例。在这里,我将修改最后两列:
set.seed(2)
library(data.table)
df <- data.table(a = runif(10, 90, 100),
b = runif(10, 95, 105),
c = runif(10, 90, 100))
df[,c('b','c') := lapply(.SD, function(x) pmin(x, quantile(x, 0.975))), .SDcols = c('b','c')]
print(df)
a b c
1: 91.82174 103.40371 99.49889
2: 93.60763 104.45268 91.01073
3: 99.03800 95.44965 92.56751
4: 93.94048 102.58383 98.95147
5: 97.79881 97.96888 93.87944
6: 92.84159 101.51054 97.94285
7: 98.53721 95.84990 93.49397
8: 91.72242 104.68683 91.38744
9: 90.79264 95.13625 96.50509
10: 92.92065 100.38869 95.44004
set.seed(2)
库(数据表)
df使用@ManishSaraswat设置的数据,我相信你想要这样的东西
df <- data.frame(a = runif(10, 90, 100),
b = runif(10, 95, 105),
c = runif(10, 90, 100))
apply(df, 2, function(x){
quant <- quantile(x, 0.975)
ifelse(x > quant, quant, x)
})
df使用@ManishSaraswat设置的数据,我相信你想要这样的东西
df <- data.frame(a = runif(10, 90, 100),
b = runif(10, 95, 105),
c = runif(10, 90, 100))
apply(df, 2, function(x){
quant <- quantile(x, 0.975)
ifelse(x > quant, quant, x)
})
df您可以在base R中的一行中执行此操作
#set up the data
df <- data.frame(a = sample(100,replace=TRUE),
b = sample(100,replace=TRUE),
c = sample(100,replace=TRUE))
df2 <- as.data.frame(lapply(df, function(x) pmin(x, quantile(x, 0.975))))
#设置数据
df您可以在基本R中的一行中执行此操作
#set up the data
df <- data.frame(a = sample(100,replace=TRUE),
b = sample(100,replace=TRUE),
c = sample(100,replace=TRUE))
df2 <- as.data.frame(lapply(df, function(x) pmin(x, quantile(x, 0.975))))
#设置数据
df欢迎来到SO!你能举个数据的例子吗?另外,在这里阅读更多关于提出问题的内容:欢迎来到SO!你能举个数据的例子吗?另外,请阅读更多关于在此处提出问题的信息:或在R基:DF[]97.5,97.5,x))
为什么会被否决?@ManishSaraswat可能是因为OP询问的是数据的分位数,而不是值。@AndrewGustar非常感谢。回答问题的这种兴奋有时让我发疯。“从现在起我会小心的。”马尼什萨拉斯瓦特我知道这种感觉——我们都做过!或者在R基:DF[]97.5,97.5,x))
为什么会被否决?@ManishSaraswat可能是因为OP询问的是数据的分位数,而不是值。@AndrewGustar非常感谢。回答问题的这种兴奋有时让我发疯。“从现在起我会小心的。”马尼什萨拉斯瓦特我知道这种感觉——我们都做过!