我有一个2010年和2019年的土地覆盖类型的数据框架。Pland代表总的土地覆盖价值,1等于该特定区域相对于ID的100%。这些计算是事先进行的,id代表每个几何形状。
我想执行一个函数,该函数生成另一个具有以下描述性名称的列,其中*
表示要替换的名称:
lc_names <- tibble(landcover = 0:15,
lc_name = c("*_to_water",
"*_to_evergreen_needleleaf",
"*_to_evergreen_broadleaf",
"*_to_deciduous_needleleaf",
"*_to_deciduous_broadleaf",
"*_to_mixed_forest",
"*_to_closed_shrubland",
"*_to_open_shrubland",
"*_to_woody_savanna",
"*_to_savanna",
"*_to_grassland",
"*_to_wetland",
"*_to_cropland",
"*_to_urban",
"*_to_mosiac",
"*_to_barren"))
#these names can be used to replace the star
lc_names <- tibble(landcover = 0:15,
lc_name = c("water",
"evergreen_needleleaf",
"evergreen_broadleaf",
"deciduous_needleleaf",
"deciduous_broadleaf",
"mixed_forest",
"closed_shrubland",
"open_shrubland",
"woody_savanna",
"savanna",
"grassland",
"wetland",
"cropland",
"urban",
"mosiac",
"barren"))
A tibble: 50 x 4
id y2010 y2019 pland
<int> <int> <int> <dbl>
1 1 12 12 1
2 2 12 12 1
3 3 12 12 1
4 4 12 12 1
5 5 12 12 1
6 6 3 5 0.0345
7 6 9 9 0.0345
8 6 9 10 0.0345
9 6 10 12 0.0345
10 6 10 14 0.0345
# ... with 40 more rows
cropland_to_cropland
id y2010 y2019 pland lc_name
<int> <int> <int> <dbl>
1 1 12 12 1 cropland_to_cropland
2 2 12 12 1 cropland_to_cropland
3 3 12 12 1 cropland_to_cropland
4 4 12 12 1 cropland_to_cropland
5 5 12 12 1 cropland_to_cropland
6 6 3 5 0.0345 closed_shrubland_to_deciduous_broadleaf
可复制代码:
structure(list(id = c(1L, 2L, 3L, 4L, 5L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L,
18L, 19L, 20L, 21L, 22L, 23L, 23L, 23L, 24L, 24L, 25L, 25L, 25L,
25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 36L
), y2010 = c(12L, 12L, 12L, 12L, 12L, 3L, 9L, 9L, 10L, 10L, 12L,
12L, 14L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L,
12L, 12L, 12L, 12L, 12L, 10L, 12L, 12L, 10L, 12L, 10L, 10L, 12L,
12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 8L, 10L
), y2019 = c(12L, 12L, 12L, 12L, 12L, 5L, 9L, 10L, 12L, 14L,
12L, 12L, 9L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L,
12L, 12L, 12L, 12L, 12L, 12L, 14L, 12L, 14L, 10L, 12L, 12L, 12L,
12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 8L,
14L), pland = c(1, 1, 1, 1, 1, 0.0344827586206897, 0.0344827586206897,
0.0344827586206897, 0.0344827586206897, 0.0344827586206897, 0.758620689655172,
0.0344827586206897, 0.0344827586206897, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 0.0344827586206897, 0.931034482758621,
0.0344827586206897, 0.0344827586206897, 0.96551724137931, 0.0344827586206897,
0.0344827586206897, 0.0344827586206897, 0.896551724137931, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 0.137931034482759, 0.0344827586206897
)), row.names = c(NA, -50L), class = c("tbl_df", "tbl", "data.frame"
))
用简单的子集--你基本上就快到了。
# using +1 because you've got this 0 in your values ... maybe reconsider this... :)
mydat$new_col <-
paste0(lc_names$lc_name[mydat$y2010 + 1], "_to_", lc_names$lc_name[mydat$y2019 + 1])
mydat
#> # A tibble: 50 x 5
#> id y2010 y2019 pland new_col
#> <int> <int> <int> <dbl> <chr>
#> 1 1 12 12 1 cropland_to_cropland
#> 2 2 12 12 1 cropland_to_cropland
#> 3 3 12 12 1 cropland_to_cropland
#> 4 4 12 12 1 cropland_to_cropland
#> 5 5 12 12 1 cropland_to_cropland
#> 6 6 3 5 0.0345 deciduous_needleleaf_to_mixed_forest
#> 7 6 9 9 0.0345 savanna_to_savanna
#> 8 6 9 10 0.0345 savanna_to_grassland
#> 9 6 10 12 0.0345 grassland_to_cropland
#> 10 6 10 14 0.0345 grassland_to_mosiac
#> # … with 40 more rows
我有一个包含1.6x10^8记录的data.table,我想根据值为1的指示器列名称创建一个新的字符列。 例如 我希望它尽可能的健壮和干净,并且只依赖于data.table语法和/或其他有用的包/函数(例如dcast);我想避免创建大量的用户定义函数,因为考虑到我的数据表的大小,运行这个函数需要非常长的时间。 我已经查看了其他帖子,但我无法找到与我的情况和所需输出相似的东西。 任何帮助将不胜感激。
我有一个如下所示的数据表 它有代表名称的p列和代表值的t列。t1是对应于p1、t2到p2等的值... 在每一行上,p列的值都是唯一的(或)。t列中的值也是如此。 我要做的是创建三个新列: ,每行所有t列的最小值(不包括NA) ,如果t_min存在(不是NA),则p列的对应值…因此,如果t2列具有t-min值,则列的对应值 ,具有p_min值的列的名称。因此,如果p_min值来自column,则“p
我想根据列_1和列_2或列_3中的值创建一个新列“column_new”。如果列_1=='C',则列_new的值与列_2相同,但如果列_1=='G',则列_new的值与列_3相同。 我试过: 错误:值错误:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 还尝试: 错误:值错误:数据帧的真值不明确。使用a.empty、a.bool()、a.
我有一个数据框如下所示 我想增加两列, 第一个名为“活动”的开关将值切换为1(如果为df.value 我尝试使用for循环,但当时间序列很长时,它会占用太多时间。有人知道更好的方法吗?谢谢你的进步!
Class类提供很多方法用于获取类的各种信息,比如获取类名、判断该类是否是一个接口还是普通类等等。在Java中枚举类是一种类,而注解是一个接口,数组也是一个类;Java原始类型(boolean, byte, char, short, int, long, float, and double)和关键字void也被表示为Class的对象。
问题内容: 我想申请我的自定义函数(它使用的梯)这六个列我的数据帧的每一行中)。 我尝试了与其他问题不同的方法,但似乎仍然找不到适合我问题的正确答案。关键在于,如果该人被视为西班牙裔,就不能被视为其他任何人。即使他们在另一个种族栏中的得分为“ 1”,他们仍然被视为西班牙裔,而不是两个或两个以上的种族。同样,如果所有ERI列的总和大于1,则将它们计为两个或多个种族,并且不能计为唯一的种族(西班牙裔除