如何从含对应国家的城市列表中随机抽样并生成对应变量?
R实现城市随机抽样及对应国家匹配
步骤1:将列表转换为结构化数据框
原列表按国家分组存储城市,先把它转为包含「城市」和「国家」的二维数据框,方便后续抽样与匹配:
# 定义原始列表 city_list <- list(Spain = c("Barcelona", "Madrid"), Austria = c("Vienna", "Salzburg"), France = c("Paris", "Lyon"), Italy = c("Milano", "Roma")) # 转换为数据框,重命名列名更直观 city_df <- stack(city_list) colnames(city_df) <- c("City", "Country")
步骤2:随机抽样并提取对应变量
用sample()函数实现随机抽样,再同步提取城市与对应国家:
示例1:随机抽取1个城市
# 随机选1行的索引 sample_idx <- sample(nrow(city_df), 1) # 提取抽样结果 selected_city <- city_df$City[sample_idx] selected_country <- city_df$Country[sample_idx] # 输出结果 cat("抽取的城市:", selected_city, "\n对应的国家:", selected_country)
示例2:随机抽取多个城市(以2个为例)
# 随机选2个不重复的行 sample_idx <- sample(nrow(city_df), 2) # 生成包含抽样结果的变量 sampled_data <- city_df[sample_idx, ] # 查看结果 sampled_data
补充:生成类似cbind的矩阵结果
如果需要直接输出示例中cbind的矩阵格式,可这样写:
# 抽取2个城市并转换为矩阵 sampled_rows <- city_df[sample(nrow(city_df), 2), ] result_matrix <- cbind(Country = sampled_rows$Country, City = sampled_rows$City) result_matrix
内容的提问来源于stack exchange,提问作者carphunter
相关产品推荐
相关产品推荐

