我正在使用一个包含65个变量的数据帧.第一个变量为一个人编目,接下来的64个变量表示该人与64个位置中的每一个的地理距离.使用R,我想创建一个新变量,将每个人的最短距离编目到这64个位置之一.
例如:如果人X距离位置35,50,79,100,450 ......英里,我希望新变量自动为它们分配35,因为这是最短的距离.任何有关这方面的帮助将非常感激.谢谢.
Jor*_*eys 12
或者,使用贾斯汀的例子:
df$shortest <- do.call(pmin,df[-1])
Run Code Online (Sandbox Code Playgroud)
还看到?pmin和?do.call,并注意您可以通过使用列表索引在您的数据帧丢弃第一变量(所以不使用任何逗号可言,也见?Extract)
df <- data.frame(let=letters[1:25], d1=sample(1:25,25), d2=sample(1:25,25), d3=sample(1:25,25))
df$shortest <- apply(df[,2:4],1,min)
Run Code Online (Sandbox Code Playgroud)
第二行将函数min应用于每一行,并将其分配给data.frame df中的新列.有关?apply第二行正在做什么的更多解释,请参阅.小心跳过第一列或任何不是距离的列:
apply(df,1,min) 因为它找到了字符串的"min",所以给出了完全不同的答案.
> min(2:10)
[1] 2
> min(as.character(2:10))
[1] "10"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22582 次 |
| 最近记录: |