将相对观测值转换为数值

时间:2016-07-08 16:39:44

标签: r data-analysis bigdata

这是我在学习java之后在R中的第一个项目。

我有一个(大)数据集,我已经从csv文件导入到数据框中。

我已经确定了这个问题的两个相关专栏,第一个有患者名字,第二个是询问患者肿胀程度。

肿胀程度是相对的,即更好,更差或大致相同。

并非所有患者都有相同数量的观察结果。

我很难将这些相对值转换为数值,可用作更大分析的一部分。

以下是对我认为可能是合适解决方案的伪代码:

for row in 'patientname'
  patientcounter = dtfr1[row, 'patientname'];
  if dtfr1[row, 'patientname'] == patientcounter
    if dtfr1[row, 'Does.you.swelling.seem.better.or.worse'] == 'better'
      conditioncounter--;
      dtfr1[row, 'Does.you.swelling.seem.better.or.worse'] = conditioncounter;
    elseif [row, 'Does.you.swelling.seem.better.or.worse'] == 'better'
      conditoncounter++;
      dtfr1[row, 'Does.you.swelling.seem.better.or.worse'] = conditioncounter;
    else
      dtfr1[row, 'Does.you.swelling.seem.better.or.worse'] = conditioncounter;
  if dtfr1[row, 'patientname'] =! patientcounter
    patientcounter = dtfr1[row, 'patientname'];  

您对这个问题的良好解决方案有什么建议?谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望患者的worsebetter计数有所不同吗?如果是这样,这样的事情就行了。

# Simulated data
dtfr1 <- data.frame(patient = sample(letters[1:3], 100, replace=TRUE), 
                    condition = sample(c("better", "worse"), 100, replace=TRUE))
head(dtfr1)
#   patient condition
# 1       a     worse
# 2       b    better
# 3       b     worse
# 4       a    better
# 5       c     worse
# 6       a    better

better_count <- tapply(dtfr1$condition, dtfr1$patient, function(x) sum(x == "better"))
worse_count <- tapply(dtfr1$condition, dtfr1$patient, function(x) sum(x == "worse"))
worse_count - better_count
#  a  b  c 
#  5  0 -1